我使用T/SQL在Microsoft SQL Server 2008递归父/子查询
我有一个表
CREATE TABLE [TestTable](
[CHILD] [int] NOT NULL,
[PARENT] [int] NOT NULL
) ON [PRIMARY]
GO
这是定义一个父子hierarchial关系
一些值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
它拥有权发生,但错误的排序顺序! 有没有人有任何想法如何解决这个问题?
谢谢!
非常好的答案三江源。 – gordon613
我也看过http://blogs.msdn.com/b/simonince/archive/2008/10/17/hierarchies-with-hierarchyid-in-sql-2008.aspx,它讨论了您提到的hierarchyID类型。 – gordon613