34,590
社区成员
发帖
与我相关
我的任务
分享
;WITH CTET
AS
(
SELECT budget_id,parent_id,avail_amount,ID=budget_id FROM t_Budget
UNION ALL
SELECT a.budget_id,a.parent_id,a.avail_amount,b.ID FROM t_Budget AS a INNER JOIN CTET AS b ON b.budget_id=a.parent_id
)
SELECT a.* ,
b.avail_amount AS [各节点总金额]
FROM t_Budget AS a
INNER JOIN ( SELECT ID ,
SUM(avail_amount) AS avail_amount
FROM CTET
GROUP BY ID
) AS b ON a.budget_id = b.ID
查parent_id=0
e.g.
;WITH CTET
AS
(
SELECT budget_id,parent_id,avail_amount,ID=budget_id FROM t_Budget WHERE parent_id=0
UNION ALL
SELECT a.budget_id,a.parent_id,a.avail_amount,b.ID FROM t_Budget AS a INNER JOIN CTET AS b ON b.budget_id=a.parent_id
)
SELECT a.* ,
b.avail_amount AS [各节点总金额]
FROM t_Budget AS a
INNER JOIN ( SELECT ID ,
SUM(avail_amount) AS avail_amount
FROM CTET
GROUP BY ID
) AS b ON a.budget_id = b.ID
;WITH CTET
AS
(
SELECT budget_id,parent_id,avail_amount,ID=budget_id FROM t_Budget
UNION ALL
SELECT a.budget_id,a.parent_id,a.avail_amount,b.ID FROM t_Budget AS a INNER JOIN CTET AS b ON b.parent_id=a.budget_id
)
SELECT a.* ,
b.avail_amount AS [各节点总金额]
FROM t_Budget AS a
INNER JOIN ( SELECT ID ,
SUM(avail_amount) AS avail_amount
FROM CTET
GROUP BY ID
) AS b ON a.budget_id = b.ID