大家好,我用的是SQL2005,我想利用CTE分层汇总金额,具体的表如下我运行以下语句--列出项目的层次名称
DECLARE @i INT,@amount float
SELECT @i=23;WITH Co_ItemNameSet_CTE(pi_sId, pi_id,parent_id, pi_Name,amount,Level)
AS
(
    SELECT  pi_sId, pi_id,Parent_id, pi_name ,amount,1 AS [Level]
    FROM  PAY_PI
    WHERE pi_sid=@i
    UNION ALL
    SELECT  c.pi_sId,c.pi_id,c.Parent_id, c.pi_Name,c.amount,[Level] + 1
    FROM  PAY_PI c  INNER JOIN Co_ItemNameSet_CTE ct
    ON c.Parent_id=ct.pi_sId)SELECT * FROM Co_ItemNameSet_CTE order by pi_id
go结果sid      id                parentid  名称        金额    level23 ZH317.FB.03         10 专线工程施工    0      1
28 ZH317.FB.03.01         23 线路本体工程    0      2
30 ZH317.FB.03.01.01 28 装置性材料 0 3
76 ZH317.FB.03.01.01.01 30 砼杆         0      4
83 ZH317.FB.03.01.01.01.01 76 9米等径上段 4.02 5
84 ZH317.FB.03.01.01.01.02 76 9米等径下段 4.02 5
85 ZH317.FB.03.01.01.01.03 76 9米等径上段 18.09 5
86 ZH317.FB.03.01.01.01.04 76 9米等径下段 18.09 5
77 ZH317.FB.03.01.01.02 30 砼预制品 0 4
88 ZH317.FB.03.01.01.02.01 77 底盘         22.11 5
89 ZH317.FB.03.01.01.02.02 77 拉盘         175.88 5
90 ZH317.FB.03.01.01.02.03 77 拉盘         8.04 5
91 ZH317.FB.03.01.01.02.04 77 拉盘         197.99 5
92 ZH317.FB.03.01.01.02.05 77 砼墩         11.06 5
96 ZH317.FB.03.01.01.02.06 77 砼墩         4.02 5
97 ZH317.FB.03.01.01.02.07 77 砼墩         40.2 5
78 ZH317.FB.03.01.01.03 30 线材         0 4
98 ZH317.FB.03.01.01.03.01 78 导线         1509 5
103 ZH317.FB.03.01.01.03.02 78 导线         11267.2 5
104 ZH317.FB.03.01.01.03.03 78 钢绞线         2336.99 5
105 ZH317.FB.03.01.01.03.04 78 钢绞线       2495.94 5
106 ZH317.FB.03.01.01.03.05 78 钢绞线  2707.08 5
79 ZH317.FB.03.01.01.04 30 金具、电瓷 0 4
107 ZH317.FB.03.01.01.04.01 79 复合绝缘子 57.29 5
108 ZH317.FB.03.01.01.04.02 79 复合绝缘子 232.16 5
109 ZH317.FB.03.01.01.04.03 79 瓷横担       46.92 5
110 ZH317.FB.03.01.01.04.04 79 地线吊架 3.03 5
111 ZH317.FB.03.01.01.04.05 79 耐张线夹 224.22 5
112 ZH317.FB.03.01.01.04.06 79 悬垂线夹 3.03 5
120 ZH317.FB.03.01.01.04.10 79 悬垂线夹 54.54 5
121 ZH317.FB.03.01.01.04.11 79 悬垂线夹 10.1 5
122 ZH317.FB.03.01.01.04.12 79 单联碗头 281.79 5如何利用CTE,让金额栏层层汇总。