22,209
社区成员
发帖
与我相关
我的任务
分享
WITH
/* 测试数据
table1(AR_ID,PID)AS(
SELECT 1,0 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,1 UNION ALL
SELECT 19,1 UNION ALL
SELECT 20,19 UNION ALL
SELECT 21,19 UNION ALL
SELECT 14,1 UNION ALL
SELECT 15,2 UNION ALL
SELECT 16,1 UNION ALL
SELECT 17,2 UNION ALL
SELECT 18,16
),*/
a AS (
SELECT *,
CONVERT(varchar(20),PID) AS SORT
FROM table1
WHERE PID = 0
UNION ALL
SELECT c.*,
CONVERT(varchar(20),p.SORT+'_'+CONVERT(varchar(11),c.AR_ID)) AS result
FROM a p
JOIN table1 c
ON p.AR_ID = c.PID
)
SELECT *
FROM a
ORDER BY SORT
AR_ID PID SORT
----------- ----------- --------------------
1 0 0
14 1 0_14
16 1 0_16
18 16 0_16_18
19 1 0_19
20 19 0_19_20
21 19 0_19_21
2 1 0_2
15 2 0_2_15
17 2 0_2_17
3 1 0_3