求一树型节点显示的sql语句

xianghua 2010-08-13 03:40:00
原如数据是这样:
id value upid(父亲ID)

22 电压(V) 0
23 220~250 22
24 110~130 22
25 36 22
26 功率(W) 0
27 10 26
28 15 26
29 25 26
30 30 22

要求这样显示:
id value upid(父亲ID)

22 电压(V) 0
23 220~250 22
24 110~130 22
25 36 22
30 30 22

26 功率(W) 0
27 10 26
28 15 26
29 25 26


...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianghua 2010-08-13
  • 打赏
  • 举报
回复
太强了。谢谢
guguda2008 2010-08-13
  • 打赏
  • 举报
回复
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(id INT ,value VARCHAR(10), upid INT)
INSERT INTO TB
SELECT 22 ,'电压(V)', 0 UNION ALL
SELECT 23 ,'220~250', 22 UNION ALL
SELECT 24 ,'110~130', 22 UNION ALL
SELECT 25 ,'36', 22 UNION ALL
SELECT 26 ,'功率(W)', 0 UNION ALL
SELECT 27 ,'10', 26 UNION ALL
SELECT 28 ,'15', 26 UNION ALL
SELECT 29 ,'25', 26 UNION ALL
SELECT 30 ,'30', 22

;WITH MU AS (
SELECT *,CONVERT(VARCHAR(MAX),ROW_NUMBER() OVER(ORDER BY ID)) AS NID FROM TB WHERE UPID=0
UNION ALL
SELECT TB.*,MU.NID+'-'
FROM TB
INNER JOIN MU ON TB.UPID=MU.ID
)
SELECT ID,VALUE,UPID FROM MU ORDER BY NID
/*
22 电压(V) 0
23 220~250 22
24 110~130 22
25 36 22
30 30 22
26 功率(W) 0
27 10 26
28 15 26
29 25 26
*/
hao1hao2hao3 2010-08-13
  • 打赏
  • 举报
回复
查找关键字“cte”

;with cte as
(

)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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