【发布时间】:2018-11-12 21:08:27
【问题描述】:
我有以下数据(真实数据样本,要大得多):
id p_id
1 null
2 1
3 1
4 2
5 4
6 5
7 5
8 3
9 7
是否可以使用SQL Server的解析函数得到以下结果(得到最深的层次结构):
id p_id
1 null
2 1
4 2
5 4
7 5
9 7
我可以使用递归 CTE 来获取每个 ID 的级别,但是我正在尝试使用分析函数。我怀疑我需要使用 Lag 或 Lead 函数,但是我是分析函数的新手,所以如果可以这样做,请帮助分享解决方案。感谢您的帮助!谢谢。
【问题讨论】:
-
我不确定你是否可以使用
lag和lead,不可以。不过,这可能对您来说是一些有趣的阅读:sqlservercentral.com/articles/Hierarchy/94040 -
@Leo 。 . .不,您不能为此目的使用分析函数。
-
不,您的父/子实现需要递归。如果级别数已知且很小,您可以对 n 级别使用 n-1 左连接加上 COALESCE
标签: sql sql-server recursion hierarchical-data analytic-functions