2013-08-29 60 views
0

這是我收到的錯誤:在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。sql初學者,需要使用GROUP BY幫助

當我程序

SELECT prod.LineNumber , 
    "Pounds Made" = SUM(prod.PoundsMade) , 
    "Down Time" = SUM(prodDown.DownTimeHrs + DownTimeMins/60) , 
    prodDown.LineNumber , 
    availHrs.LineNumber , 
    "Available Hours" = SUM(availHrs.AvailableHRS) 
FROM rpt_Line_Shift_Prod AS prod 
    INNER JOIN rpt_Line_Shift_ProdDownTime AS prodDown 
    INNER JOIN rpt_LINE_Shift_AvailableHrs AS availHrs ON prodDown.LineNumber = availHrs.LineNumber ON prodDown.LineNumber = prod.LineNumber 
--ON availHrs.LineNumber = prod.LineNumber 
GROUP BY prod.LineNumber 

我在這裏使用三個表,所有的,我已經改名prodDown,prod和availHrs。

謝謝!

+2

您需要通過'availHrs.LineNumber','prod.LineNumber','prodDown.LineNumber'將您的選擇列表中沒有被聚合到您的組中的列 – Taryn

回答

0

prodDown.LineNumber``and availHrs.LineNumber`到GROUP BY子句以及:

GROUP BY prod.LineNumber,prodDown.LineNumber, availHrs.LineNumber 

所有列在具有類似sum沒有聚集需要是GROUP BY子句中的選擇列表。

0

你組只由prod.LineNumber ,而在你的選擇,你也有 prodDown.LineNumber, availHrs.LineNumber 添加他們group子句

GROUP by prod.LineNumber,prodDown.LineNumber, availHrs.LineNumber 
2
SELECT prod.LineNumber 
     ,"Pounds Made" = SUM(prod.PoundsMade) 
     ,"Down Time" = SUM(prodDown.DownTimeHrs + DownTimeMins/60) 
     , prodDown.LineNumber 
     , availHrs.LineNumber 
     ,"Available Hours" = SUM(availHrs.AvailableHRS)  
FROM rpt_Line_Shift_Prod AS prod 
INNER JOIN rpt_Line_Shift_ProdDownTime AS prodDown 
    ON prodDown.LineNumber = prod.LineNumber 
INNER JOIN rpt_LINE_Shift_AvailableHrs AS availHrs 
    ON prodDown.LineNumber = availHrs.LineNumber 
GROUP BY prod.LineNumber,prodDown.LineNumber, availHrs.LineNumber 
0

在當你使用一個SUM()或某一列的任意其他aggregate function,你需要確保您的選擇列表中的任何其他列也被分組。這將確保你不會得到任何重複。正如其他答案所建議的那樣,您需要確保在GROUP BY條款中包含其他列。