我要把一个单表递归绑定到dropdownlist上,效果类似于这样 市区
--市区1
--市区1下属1
--市区2
--市区2下属1
--市区3
--市区3下属1
--市区3下属2
城镇
--千灯古镇
--古镇村庄1
--周庄古镇
--周庄村庄1
WITH tab AS( SELECT S.*FROM S_Area s,
dbo.f_splitSTR('2be919d6-9b19-4d5f-ac29-546e85b43809,
B3910AD6-FD09-48A5-B6D0-CA6120842414,20864900-71E7-47C8-BDF9-2E1DC4501CFC',',')f
WHERE s.AreaId=f.col
UNION ALL
SELECT S_Area.* FROM tab,S_Area WHERE tab.AreaId=S_Area.ParentId )
SELECT AreaId,AName,ASort,ParentId FROM tab
我只会写出上面的这个语句
结果如下

好像还是错误的, B3910AD6-FD09-48A5-B6D0-CA6120842414 在结果集中没有显示
------解决思路----------------------
单独执行过
SELECT * FROM dbo.f_splitSTR('2be919d6-9b19-4d5f-ac29-546e85b43809,
B3910AD6-FD09-48A5-B6D0-CA6120842414,20864900-71E7-47C8-BDF9-2E1DC4501CFC',',')这个结果吗和这个
SELECT S.*FROM S_Area s,
dbo.f_splitSTR('2be919d6-9b19-4d5f-ac29-546e85b43809,
B3910AD6-FD09-48A5-B6D0-CA6120842414,20864900-71E7-47C8-BDF9-2E1DC4501CFC',',')f
WHERE s.AreaId=f.col
------解决思路----------------------
WITH tab AS(
SELECT S.*,
Convert(varchar(max), ROW_NUMBER() OVER(ORDER BY col)) AS path
FROM S_Area s,
(-- f_splitSTR() 的结果自己处理一下
SELECT '2be919d6-9b19-4d5f-ac29-546e85b43809' AS col UNION ALL
SELECT 'B3910AD6-FD09-48A5-B6D0-CA6120842414' UNION ALL
SELECT '20864900-71E7-47C8-BDF9-2E1DC4501CFC'
)f
WHERE s.AreaId=f.col
UNION ALL
SELECT S_Area.*,
tab.path+'\'+Convert(varchar(max),S_Area.ASort)
FROM tab,S_Area
WHERE tab.AreaId=S_Area.ParentId
)
SELECT AreaId,AName,ASort,ParentId
FROM tab
ORDER BY path