2016-09-29 115 views
1
SELECT DISTINCT [SC Vermorel SRL$Production Order].No_, 
       [SC Vermorel SRL$Production Order].[Replan Ref_ No_], 
       [SC Vermorel SRL$Production Order].Description, 
       [SC Vermorel SRL$Production Order].[Source No_], 
       [SC Vermorel SRL$Production Order].[Routing No_], 
       [SC Vermorel SRL$Production Order].Quantity, 
       [SC Vermorel SRL$Production Order].[Old Prod_ Order No_], 
       [SC Vermorel SRL$Routing Line].[Run Time], 
       [SC Vermorel SRL$Routing Line].[Run Time] * [SC Vermorel SRL$Production Order].Quantity AS TotalOre, 
       [SC Vermorel SRL$Prod_ Order Line].[Finished Quantity], 
       SUM([SC Vermorel SRL$ProductieZilnica].[Cantitate sudura]) AS [Cantitate sudura], 
       SUM([SC Vermorel SRL$ProductieZilnica].[Cantitate montaj]) AS [Cantitate montaj] 
FROM [SC Vermorel SRL$Production Order] 
INNER JOIN [SC Vermorel SRL$Routing Line] 
    ON [SC Vermorel SRL$Production Order].[Routing No_] = [SC Vermorel SRL$Routing Line].[Routing No_] 
INNER JOIN [SC Vermorel SRL$Prod_ Order Line] 
    ON [SC Vermorel SRL$Production Order].No_ = [SC Vermorel SRL$Prod_ Order Line].[Prod_ Order No_] 
INNER JOIN [SC Vermorel SRL$ProductieZilnica] 
    ON [SC Vermorel SRL$Production Order].No_ = [SC Vermorel SRL$ProductieZilnica].RPO 
WHERE ([SC Vermorel SRL$Production Order].Status = 3) 
     AND ([SC Vermorel SRL$Production Order].[Location Code] = 'MACH FIN') 
     AND ([SC Vermorel SRL$Production Order].[Gen_ Prod_ Posting Group] = 'FINISHED G') 
     AND ([SC Vermorel SRL$Routing Line].No_ = '150') 
GROUP BY [SC Vermorel SRL$Production Order].No_ 

我需要的所有條目的總和,從另一個表([SC Vermorel SRL$ProductieZilnica])從[SC Vermorel SRL$Production Order]表對應於每個不同No_重視。SELECT DISTINCT總和 - GROUP BY

我不相信上帝的愛使它工作。有人能指引我朝着正確的方向嗎?

+0

的SQL Server 2005。 2015. –

+4

你有沒有使用AS關鍵字來簡化你的名字? – Steve

+2

截然不同,在同一個查詢中group by是毫無意義的,這個group將會使它不同。在你的組中,你必須編寫你選擇的每一列(除了函數,如max,min,sum,...)你的查詢不會這樣做,因此它不會工作,但會返回錯誤。 – GuidoG

回答

4

首先,使用表aliases - 它會使您的查詢更具可讀性。

如果您使用GROUP BY,你需要添加的所有列,除了一個是在聚合函數(你有SUM)這樣的:這是寫在從vsstudio查詢生成器

SELECT PO.No_, 
     PO.[Replan Ref_ No_], 
     PO.[Description], 
     PO.[Source No_], 
     PO.[Routing No_], 
     PO.Quantity, 
     PO.[Old Prod_ Order No_], 
     RL.[Run Time], 
     RL.[Run Time] * PO.Quantity AS TotalOre, 
     POL.[Finished Quantity], 
     SUM(PZ.[Cantitate sudura]) AS [Cantitate sudura], 
     SUM(PZ.[Cantitate montaj]) AS [Cantitate montaj] 
FROM [SC Vermorel SRL$Production Order] PO 
INNER JOIN [SC Vermorel SRL$Routing Line] RL 
    ON PO.[Routing No_] = RL.[Routing No_] 
INNER JOIN [SC Vermorel SRL$Prod_ Order Line] POL 
    ON PO.No_ = POL.[Prod_ Order No_] 
INNER JOIN [SC Vermorel SRL$ProductieZilnica] PZ 
    ON PO.No_ = PZ.RPO 
WHERE  (PO.Status = 3) AND (PO.[Location Code] = 'MACH FIN') AND 
        (PO.[Gen_ Prod_ Posting Group] = 'FINISHED G') AND (RL.No_ = '150') 
GROUP BY PO.No_, 
     PO.[Replan Ref_ No_], 
     PO.[Description], 
     PO.[Source No_], 
     PO.[Routing No_], 
     PO.Quantity, 
     PO.[Old Prod_ Order No_], 
     RL.[Run Time], 
     PO.Quantity, 
     POL.[Finished Quantity] 
+0

我即將發佈相同的答案.. :) +1 .. –

+0

非常感謝你的答案和所有的建議。非常親切。像往常一樣,我是一個白癡,雖然是我問的方式正確的答案,我仍然需要一個建議:這個查詢,以我問的方式,只輸出具有值的條目總和列。我真正想要的是顯示來自PO表的所有條目,即使它們對PZ表中的總和列有或沒有值。再次感謝你們所有人!我的下一篇文章會更乾淨。 –

+0

我的榮幸!如果您需要PO中的ALL,請將所有INNER JOIN更改爲LEFT JOIN,在這種情況下,RL,POL和SZ列中可能有空值。 INNER JOIN - 獲取兩個表中的所有值,LEFT JOIN顯示所有值,但如果第二個表中沒有核心指定行 - 它將顯示NULL。 – gofr1