2014-11-21 85 views
0

Get records containing all the child records in sql server檢索親子幼童,兒童recors在SQL查詢

我得到一個輸出(以上來自第二個答案說鏈路)如預期,但它在下面的格式顯示結果。

<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

我的答案在下面有幫助嗎?需要關於它背後的邏輯的額外信息? – 2014-11-21 15:04:41

回答

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 Management Studio中運行代碼,則空間會被看到(在SQL小提琴可能會有一個默認的修剪結果

+0

REPLICATE功能是您的問題的真正答案。這裏的問題:http://msdn.microsoft.com/en-us/library/ms174383(v=sql.105).aspx – 2014-11-21 09:01:12