gpt4 book ai didi

sql - 聚合自引用表

转载 作者:行者123 更新时间:2023-12-01 09:59:10 27 4
gpt4 key购买 nike

我已经看到了几个关于如何递归查询自引用表的问题/答案,但我正在努力将我发现的答案应用到每个 parent 、祖 parent 等人身上,而不管项目在哪里位于层次结构中。

MyTable
-----------
Id
Amount
ParentId

数据:

Id    Amount      Parent Id
1 100 NULL
2 50 1
3 50 1
4 25 2
5 10 4

如果我在没有过滤的情况下运行这个查询,并且求和,结果将是:

Id   SumAmount
1 235
2 85
3 50
4 35
5 10

换句话说,我想查看 MyTable 中的每个项目及其所有子项的总金额。

最佳答案

类似的东西?

    WITH temp (ID, ParentID, TotalAmount)
AS
(
SELECT ID, ParentID, Amount
FROM MyTable
WHERE NOT EXISTS (SELECT * FROM MyTable cc WHERE cc.ParentID = MyTable.ID)

UNION ALL

SELECT MyTable.ID, MyTable.ParentID, TotalAmount + MyTable.Amount
FROM MyTable
INNER JOIN temp ON MyTable.ID = temp.ParentID
)

SELECT ID, SUM(TotalAmount) FROM
(SELECT ID, TotalAmount - (SELECT Amount FROM MyTable M WHERE M.ID = temp.ID) TotalAmount
FROM temp
UNION ALL
SELECT ID, Amount AS TotalAmount FROM MyTable) X
GROUP BY ID

根据下面的评论编辑查询,现在一切正常。

关于sql - 聚合自引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com