我在CheckLine表中提供了信息,它基本上分解了特定支票上的各種費用和信息。對於這個查詢,我想彙總CheckLine的總數,但是它將所有CheckLine一起提供SUM。我知道我錯過了一些明顯的東西,但我一直在爲我個人化SUM而撓頭。這裏是我的查詢:SUM子查詢每行的總金額
SELECT DISTINCT
O.FileNumber
,(SELECT DISTINCT
SUM(CL.Amount)
FROM
dbo.Orders O
LEFT JOIN dbo.Checks C
ON O.OrdersID = C.OrdersID
LEFT JOIN dbo.CheckLine CL
ON C.ChecksID = CL.ChecksID
) AS 'Total'
FROM
dbo.Orders O
LEFT JOIN dbo.Checks C
ON O.OrdersID = C.OrdersID
LEFT JOIN dbo.CheckLine CL
ON C.ChecksID = CL.ChecksID
這是它返回:
| FileNumber | … | Total |
| 1 | | 2000 |
| 2 | | 2000 |
它應該是什麼返回是:
| FileNumber | … | Total |
| 1 | | 700 |
| 2 | | 1300 |
我的全腦放屁的思考嗎?多謝你們!
這個問題,我也選擇其他領域,所以當我嘗試「GROUP BY」我收到彙總錯誤:「列'dbo.Orders.CloseDate'在選擇列表中無效,因爲它不是包含在一個集合函數或GROUP BY子句中。「這就是我試圖做子查詢的原因。 – PicoDeGallo
黃金法則是:沒有被聚合的'SELECT'中的每一列都應該在'GROUP BY' – Nizam
我編輯了我的答案來回答你的評論。你想得到每個FileNumber和CloseDate的總和嗎?如果是這樣,查詢中的版本可以解決您的問題。如果不是的話,可能你會想用'MAX'或'MIN'函數來聚合'CloseDate'too。 – Nizam