【问题标题】:Retrieve Parent Child Cub-Child recors in SQL Query在 SQL 查询中检索父子子子记录
【发布时间】:2014-11-21 07:38:28
【问题描述】:

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> 

如何制定上述显示顺序?

【问题讨论】:

  • 下面我的回答对你有帮助吗?需要有关其背后逻辑的额外信息?

标签: sql nested


【解决方案1】:

将 Recursion 列添加到 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 中,结果可能有一个默认的修剪选项

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 2016-04-16
相关资源
最近更新 更多