2014-11-21 1 views
0

Get records containing all the child records in sql serverПолучить Родитель Ребенок Cub-Child recors в SQL Query

Я получаю выход (из второго ответа на выше упомянутой линии), как и ожидалось, но он показывает результаты ниже формате.

<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> 

Как я могу сформулировать вышеуказанный порядок отображения?

+0

мой ответ ниже поможет вам? Нужна дополнительная информация относительно логики, стоящей за ней? –

ответ

0

Добавить столбец рекурсии в CTE2 и в окончательном отборного заявления должен выглядеть следующим образом:

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 может быть опция обрезки по умолчанию для результатов

+0

Функция REPLICATE - это реальный ответ на ваш вопрос. здесь: http://msdn.microsoft.com/en-us/library/ms174383(v=sql.105).aspx –

Смежные вопросы