27,579
社区成员
发帖
与我相关
我的任务
分享
--创建测试表
DECLARE @t TABLE(ID VARCHAR(10),Name VARCHAR(20),IDX VARCHAR(10))
INSERT INTO @t VALUES('0','根',NULL)
INSERT INTO @t VALUES('1','辅料','0')
INSERT INTO @t VALUES('2','成品','0')
INSERT INTO @t VALUES('4B','其它','0')
INSERT INTO @t VALUES('5','半成品','0')
INSERT INTO @t VALUES('01','07小件','2')
INSERT INTO @t VALUES('02','07大件','2')
INSERT INTO @t VALUES('03','工作服','2')
INSERT INTO @t VALUES('101','面料类','1')
--查询
SELECT a.*
FROM @t a
LEFT JOIN
(
SELECT ID,IDX+'_'+ID AS Ord FROM @t WHERE IDX='0'
UNION
SELECT ID,'0_'+IDX+'_'+ID AS Ord FROM @t WHERE IDX<>'0'
)b
ON a.ID=b.ID
ORDER BY b.Ord
--查询结果
-------------------
0 根 NULL
1 辅料 0
101 面料类 1
2 成品 0
01 07小件 2
02 07大件 2
03 工作服 2
4B 其它 0
5 半成品 0