0

抱歉标题,但我想不出更好的主题来解决我的问题。

我有两个表在它们之间存在多对一关系,并且在同一个表中还有另一个多对一关系。我需要对与第一个表的列中的聚合相对应的列求和。

这是一张图片,说明了我想要什么:

例子 我不知道该怎么做。

4

2 回答 2

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]
于 2013-09-24T20:25:16.150 回答
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
于 2013-09-24T20:26:47.420 回答