对标题感到抱歉,但我想不出更好的问题。
我有两张桌子,他们之间的多对一关系和同一桌子中的其他多对一的关系。我需要对与第一个表的列中的聚合相对应的列进行求和。
这是一张说明我想要的图片:
我不知道如何继续这个。
答案 0 :(得分:4)
这应该做:
SELECT ISNULL(E.idParent,E.id) Id,
SUM(I.Value) [Sum]
FROM EXPENSE_TABLE E
LEFT JOIN INVOICE_TABLE I
ON I.idExpense = E.id
GROUP BY ISNULL(E.idParent,E.id)
更新要求:
SELECT ISNULL(E.idParent,E.id) Id,
E2.[description],
SUM(I.Value) [Sum]
FROM EXPENSE_TABLE E
LEFT JOIN INVOICE_TABLE I
ON I.idExpense = E.id
INNER JOIN EXPENSE_TABLE E2
ON ISNULL(E.idParent,E.id) = E2.id
GROUP BY ISNULL(E.idParent,E.id),
E2.[description]
答案 1 :(得分:1)
您可以通过对加入INVOICE_TABLE的EXPENSE_TABLE结果执行汇总和操作来获得您要查找的结果。
例如:
SELECT e.idParent, SUM(i.value)
FROM EXPENSE_TABLE AS e
INNER JOIN INVOICE_TABLE AS i ON i.idExpense = e.id
GROUP BY e.idParent
ORDER BY e.idParent