0
我定义区的层次结构中的表所示:SQL服务器 - 层次查询 - 订购结果
与它一起,我使用下面的查询:
WITH My_CTE(Zone, Parent, LEVEL , treepath) AS
(SELECT Zone_ID AS Zone ,
Parent_ID AS Parent ,
0 AS LEVEL ,
ISNULL(CAST(Parent_ID AS VARCHAR(1024)),'') AS treepath
FROM [UWQ].[T_SYS_Zones]
WHERE Parent_ID IS NULL
UNION ALL
SELECT d.Zone_ID AS Zone ,
d.Parent_ID AS Parent ,
My_CTE.LEVEL + 1 AS LEVEL ,
CAST(My_CTE.treepath + ' > ' + CAST(d.Parent_ID AS VARCHAR(1024)) AS VARCHAR(1024)) AS treepath
FROM [UWQ].[T_SYS_Zones] d
INNER JOIN My_CTE
ON My_CTE.Zone = d.Parent_ID
)
SELECT *
FROM My_CTE
ORDER BY level , treepath;
此查询会返回所需的信息,除了我需要它以不同的顺序,也就是说,每个区域都递归列出其子和儿童的孩子,直到用尽为止,然后才列出下一个兄弟。
使用表中显示的数据,其结果应该是这样的:
Zone Parent LEVEL treepath
0 NULL 0
1 0 1 > 0
2 1 2 > 0 > 1
8 2 3 > 0 > 1 > 2
9 2 3 > 0 > 1 > 2
10 2 3 > 0 > 1 > 2
12 2 3 > 0 > 1 > 2
29 10 4 > 0 > 1 > 2 > 10
30 10 4 > 0 > 1 > 2 > 10
31 10 4 > 0 > 1 > 2 > 10
32 10 4 > 0 > 1 > 2 > 10
33 10 4 > 0 > 1 > 2 > 10
34 10 4 > 0 > 1 > 2 > 10
11 2 3 > 0 > 1 > 2
35 11 4 > 0 > 1 > 2 > 11
36 11 4 > 0 > 1 > 2 > 11
37 11 4 > 0 > 1 > 2 > 11
38 11 4 > 0 > 1 > 2 > 11
39 11 4 > 0 > 1 > 2 > 11
40 11 4 > 0 > 1 > 2 > 11
41 11 4 > 0 > 1 > 2 > 11
3 1 2 > 0 > 1
...
我试图与TreePath的领域没有成功形状玩。任何帮助将不胜感激。
美丽解!!!!!谢谢你,先生。 – FDavidov
@FDavidov快乐它帮助 –