gpt4 book ai didi

sql - 来自树形自引用表的分层数据

转载 作者:行者123 更新时间:2023-12-04 23:47:55 25 4
gpt4 key购买 nike

似乎在所有简单的情况下都已提出并回答了这个问题,但我遇到问题的情况除外。我尝试使用递归 CTE 来生成它;但是也许光标会更好?或者也许一组递归函数可以解决问题?

这可以在 cte 中完成吗?

考虑下表

PrimaryKey   ParentKey  
1 NULL
2 1
3 6
4 7
5 2
6 1
7 NULL

应该让步

PK
1
-2
--5
-6
--3
7
-4

在 - 标记的数量等于深度的情况下,我的主要困难是排序。

最佳答案

使用邻接列表模式有点麻烦,但可以使用递归 CTE:

WITH Hierarchy AS
(
SELECT
PrimaryKey, ParentKey,
CAST('/' + CAST(PrimaryKey AS varchar(10)) AS varchar(50)) AS [Path],
CAST('' AS varchar(50)) AS Prefix
FROM @Tbl
WHERE ParentKey IS NULL

UNION ALL

SELECT
t.PrimaryKey, t.ParentKey,
CAST(h.[Path] + '/' + CAST(t.PrimaryKey AS varchar(10)) AS varchar(50)),
CAST(h.Prefix + '-' AS varchar(50))
FROM Hierarchy h
INNER JOIN @Tbl t
ON t.ParentKey = h.PrimaryKey
)
SELECT [Path], Prefix + CAST(PrimaryKey AS varchar(10)) AS Node
FROM Hierarchy
ORDER BY [Path]

要获得您想要的确切结果,您需要 Prefix 列(执行“缩进”)和代理 Path 列,实际上执行排序.

关于sql - 来自树形自引用表的分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com