jobname jobcode
预算内 01
机服中心 0101
市局机关后勤服务经费 010101
制服清洗费 01010101
购买茶叶费 01010102
办公室 0102
人教科 0103
预算外 02
机服中心(外) 0201现我需要按逐级显示如:预算内\机服中心\市局机关后勤服务经费\制服清洗费
按这样显及最未级
预算内 01
机服中心 0101
市局机关后勤服务经费 010101
制服清洗费 01010101
购买茶叶费 01010102
办公室 0102
人教科 0103
预算外 02
机服中心(外) 0201现我需要按逐级显示如:预算内\机服中心\市局机关后勤服务经费\制服清洗费
按这样显及最未级
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-12-04 09:30:28
-------------------------------------
--> 生成测试数据: @tb
DECLARE @tb TABLE (jobname varchar(20),jobcode varchar(8))
INSERT INTO @tb
SELECT '预算内','01' UNION ALL
SELECT '机服中心','0101' UNION ALL
SELECT '市局机关后勤服务经费','010101' UNION ALL
SELECT '制服清洗费','01010101' UNION ALL
SELECT '购买茶叶费','01010102' UNION ALL
SELECT '办公室','0102' UNION ALL
SELECT '人教科','0103' UNION ALL
SELECT '预算外','02' UNION ALL
SELECT '机服中心(外)','0201'--SQL查询如下:SELECT jobname,jobcode,STUFF(x,1,1,'') AS jobpath
FROM @tb AS A
OUTER APPLY (
SELECT x = (
SELECT '/'+jobname AS [text()]
FROM @tb
WHERE A.jobcode LIKE jobcode + '%'
ORDER BY jobcode
FOR XML PATH('')
)
) AS B/*
jobname jobcode jobpath
预算内 01 预算内
机服中心 0101 预算内/机服中心
市局机关后勤服务经费 010101 预算内/机服中心/市局机关后勤服务经费
制服清洗费 01010101 预算内/机服中心/市局机关后勤服务经费/制服清洗费
购买茶叶费 01010102 预算内/机服中心/市局机关后勤服务经费/购买茶叶费
办公室 0102 预算内/办公室
人教科 0103 预算内/人教科
预算外 02 预算外
机服中心(外) 0201 预算外/机服中心(外)
*/