我在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