我必须使用递归CTE创建一个sql查询,我不知道如何继续。
我的表有很多条目,都有Id和parentId。
我希望得到这样的结构:
等等......
所有拥有父项的条目都应列在父项下。 (我的表有3到5级,我现在不确定。)
我最近的尝试看起来像这样:
WITH Query AS
(
SELECT P.Name, P.Id, P.ParentId
FROM Table P
UNION ALL
SELECT P1.Name, P1.Id, P1.ParentId
FROM Table P1
INNER JOIN Query M ON M.ParentId = P1.Id
)
SELECT * FROM Query
我尝试过不同的CTE但未达到我的目标。 我在这个问题上工作了很多时间,并且不知道如何处理。 我希望有人可以帮助我。提前谢谢。
我只希望每个条目的顶部都有一个ParentId,而下面的所有子项目都是如此。多个条目都可以。
答案 0 :(得分:1)
;WITH Query AS
(
SELECT P.Name, P.Id, P.ParentId
FROM Table P
where P.ParentId = 0 -- assume root level records have ParentId = 0
UNION ALL
SELECT C.Name, C.Id, C.ParentId
FROM Table C
INNER JOIN Query P ON P.Id = C.ParentId
)
SELECT * FROM Query
option ( MaxRecursion 0 );