-3

我想使用 SQL 查询为下表数据创建一个视图。

  empid  Name     Managerid

  1     Vinoth     Null

  2      Raja        1

  3      Ramu        6

  4      Ramesh      6

  5      Rajini      1

  6      Billa     Null 

我想以下面的样式显示上面的表格内容:

  empid  Name     Managerid

  1     Vinoth     Null

  2      Raja        1


  5      Rajini      1

  6      Billa     Null 

  3      Ramu        6

  4      Ramesh      6

告诉我如何创建一个视图来获得这个输出。

4

1 回答 1

2

为什么所有的反对票?用户正在请求层次关系的深度优先排序。

因此,如果数据在表 #t 中(替换为您的表名):

;WITH cte AS (
    SELECT  empid, Name, Managerid, CAST(empid as varchar(max)) + '|' AS Ordering
    FROM    #t
    WHERE   Managerid IS NULL
    UNION ALL
    SELECT  #t.empid, #t.Name, #t.Managerid, cte.Ordering + CAST(#t.empid AS VARCHAR(MAX))  + '|'
    FROM    cte
            JOIN #t ON cte.empid = #t.Managerid 
)
SELECT  empid, Name, Managerid 
FROM    cte
ORDER BY Ordering;
于 2013-06-13T14:09:41.713 回答