对与另一个表的列中的聚合相对应的列求和

时间:2013-09-24 19:59:28

标签: sql sql-server sum aggregate-functions

对标题感到抱歉,但我想不出更好的问题。

我有两张桌子,他们之间的多对一关系和同一桌子中的其他多对一的关系。我需要对与第一个表的列中的聚合相对应的列进行求和。

这是一张说明我想要的图片:

example 我不知道如何继续这个。

2 个答案:

答案 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