27,579
社区成员
发帖
与我相关
我的任务
分享
with T AS(
SELECT '111'AS A, ''AS B UNION ALL
SELECT '222'AS A, '111'AS B UNION ALL
SELECT '333'AS A, '222'AS B UNION ALL
SELECT '444'AS A, '111'AS B UNION ALL
SELECT '555'AS A, ''AS B
)
,tree AS(
SELECT *,
CONVERT(varchar(30),A) AS V2
FROM t
WHERE B=''
UNION ALL
SELECT t.*,
CONVERT(varchar(30),tree.V2+'\'+t.A) AS V2
FROM tree
JOIN t
ON tree.A = t.B
)
SELECT A AS V1,
V2
FROM tree
ORDER BY V2
V1 V2
---- ------------------------------
111 111
222 111\222
333 111\222\333
444 111\444
555 555
with T AS(
SELECT '111'AS A, ''AS B UNION ALL
SELECT '222'AS A, '111'AS B UNION ALL
SELECT '333'AS A, '222'AS B UNION ALL
SELECT '444'AS A, '111'AS B UNION ALL
SELECT '555'AS A, ''AS B
)
SELECT * FROM T