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

sunylang 2015-09-14 03:56:16

大神们,帮小弟看下如何根据前面三个字段,用sql语句拼出最后一个字段的格式
...全文
76 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
楼上的代码就可以实现sql server里的递归的查询。
  • 打赏
  • 举报
回复
Tiger_Zhao 2015-09-14
递归生成路径,只要前两个字段。
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
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-09-14 03:56
社区公告
暂无公告