请问如何生成这个的一个表?

qg1977 2019-05-02 07:03:19
表如下:
ID 上级ID 编码
1
2
3
4 1
5 1
6 2
6 2
7 4
8 6
9 6

如何 生成如下的一个表
ID 上级ID 编码
1 1
2 2
3 3
4 1 1_4
5 1 1_5
6 2 2_6
7 2 2_7
8 4 1_4_8
9 6 2_6_9
10 6 2_6_10
11 10 2_6_10_11

也就是每一条记录的“编码”都是上级ID的编码加上本记录的ID?
谢谢!
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yolyry 2019-05-03
  • 打赏
  • 举报
回复
SQL2005以上版本用楼上所说的递归来实现,如果以下的版本,自己写函数来实现吧
ダ雨夹雪リ 2019-05-03
  • 打赏
  • 举报
回复

CREATE TABLE #T
(
ID INT,
上级ID int
)

INSERT INTO #T(ID,上级ID) VALUES(1,null),(2,null), (3,null),(4,1),(5,1),(6,2),(7,4),(8,6),(9,6),(10,6),(11,10)
;
WITH ct
AS
(
SELECT id,上级ID,CONVERT(VARCHAR(max),id) AS 编号 FROM #T WHERE 上级ID IS NULL
UNION ALL
SELECT B.id,B.上级ID,编号+'_'+CONVERT(VARCHAR(10),B .id) FROM ct A INNER JOIN #T B ON A.id=B.上级ID
)
SELECT * FROM ct
ORDER BY id

DROP TABLE #T

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧