【发布时间】:2024-05-21 00:35:01
【问题描述】:
我在 Microsoft SQL Server 2008 中使用 T/SQL
我有一张桌子
CREATE TABLE [TestTable](
[CHILD] [int] NOT NULL,
[PARENT] [int] NOT NULL
) ON [PRIMARY]
GO
这些是定义父子层次关系的一些值
CHILD PARENT
1 2
2 0
3 1
4 2
5 0
从视觉上看,这张表是这样的
0
2
1
3
4
5
理想情况下,我希望值如下所示(右侧列表示代)
CHILD GENERATION
0 0
2 1
1 2
3 3
4 2
5 1
我的 T/SQL 代码如下所示
with n(CHILD, PARENT, GENERATION) as (
select CHILD, PARENT,1 as GENERATION from TestTable
where PARENT=0
union all
select nplus1.CHILD, nplus1.PARENT, GENERATION+1 from TestTable as nplus1, n
where nplus1.PARENT=n.CHILD
)
select CHILD,GENERATION from n
但是它不起作用!
返回
CHILD GENERATION
2 1
5 1
1 2
4 2
3 3
它有正确的世代,但排序顺序错误! 有谁知道如何解决这个问题?
谢谢!
【问题讨论】:
标签: sql-server-2008 tsql recursion