大神们,帮小弟看下怎么根据前面三个字段,用sql语句拼出最后一个字段的格式
大神们,帮小弟看下如何根据前面三个字段,用sql语句拼出最后一个字段的格式

大神们,帮小弟看下如何根据前面三个字段,用sql语句拼出最后一个字段的格式
------解决思路----------------------
递归生成路径,只要前两个字段。
大神们,帮小弟看下如何根据前面三个字段,用sql语句拼出最后一个字段的格式
------解决思路----------------------
递归生成路径,只要前两个字段。
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