小编dar*_*n08的帖子

如何在SQL中的单个列中显示递归parentID

以下是表的示例结构:

ID    Name     ParentID
-----------------------
1     Ancestor      NULL
2     GrandFather   1
3     GrandMother   1
4     Child         3
Run Code Online (Sandbox Code Playgroud)

我正在尝试写一个会返回的查询

ID     Name        Family
----------------------------
 1     Ancestor 
 2     GrandFather Ancestor
 3     GrandMother Ancestor
 4     Child       Ancestor^GrandMother
Run Code Online (Sandbox Code Playgroud)

棘手的部分是我想以自上而下的顺序显示所有行的族.

如果有人能指出我正确的方向,将不胜感激:)

编辑::这是真正的查询,但它遵循相同的想法.它在行上返回错误:marketparent.family +'^'+ t2.marketGroupName因为它无法找到marketparent

WITH marketparent ( marketGroupID,parentGroupID, marketGroupName,family)
AS
(
SELECT marketGroupID,
       parentGroupID,
       marketGroupName,
       '' as family 
 FROM EVE.dbo.invMarketGroups
 WHERE parentGroupID IS NULL
UNION ALL

    SELECT t2.parentGroupID,
     t2.marketGroupID,
     t2.marketGroupName,
     marketparent.family + '^'+ t2.marketGroupName
     FROM EVE.dbo.invMarketGroups as t2
     INNER JOIN marketparent as mp
     ON mp.marketGroupID = …
Run Code Online (Sandbox Code Playgroud)

sql-server recursive-query sql-server-2008

7
推荐指数
1
解决办法
6217
查看次数