在SQL查询中检索父子子子记录

时间:2014-11-21 07:38:28

标签: sql nested

Get records containing all the child records in sql server

我正在按预期获得输出(来自上述链接的第二个答案),但它以下面的格式显示结果。

<parent id> - <name> - <code> 
<child id> - <name> - <code>
<child id> - <name> - <code>
<child id> - <name> - <code>
<child id> - <name> - <code>
<sub child id> - <name> - <code> 
<sub child id> - <name> - <code> 
<sub child id> - <name> - <code> 

我想以下面的格式显示结果。

<parent id> - <name> - <code> 
  <child id> - <name> - <code> 
  <child id> - <name> - <code> 
        <sub child id> - <name> - <code> 
        <sub child id> - <name> - <code> 
  <child id> - <name> - <code> 
  <child id> - <name> - <code> 
        <sub child id> - <label> - <code> 
  <child id> - <name> - <code> 
  <child id> - <name> - <code> 

我如何制定上述显示顺序?

1 个答案:

答案 0 :(得分:0)

将递归列添加到CTE2并在最终的select语句中应如下所示:

SELECT  ID, 
    case when Recursion = 1 then Name
    else replicate(' ', Recursion) + Name end as Name, 
    ParentID, 
    Path
FROM    CTE2
WHERE   RowNumber = 1;

http://sqlfiddle.com/#!3/07faa/28

注意:如果在SQL Server管理工作室中运行代码,则会看到空格(在SQL Fiddle中可能会有结果的默认修剪选项