0
我有一個分層表看起來像這樣:層次表查詢
id child_id
1 2
2 3
2 4
3 5
3 6
3 7
4 8
4 9
4 10
如何編寫一個查詢來獲得這樣的格式結果:
1
|_ 2
|_ 3
| |_ 5
| |_ 6
| |_ 7
|_ 4
|_ 8
|_ 9
|_ 10
我有一個分層表看起來像這樣:層次表查詢
id child_id
1 2
2 3
2 4
3 5
3 6
3 7
4 8
4 9
4 10
如何編寫一個查詢來獲得這樣的格式結果:
1
|_ 2
|_ 3
| |_ 5
| |_ 6
| |_ 7
|_ 4
|_ 8
|_ 9
|_ 10
這是最好的,我可以這樣做:
WITH cte AS (
SELECT id, CAST(NULL AS INT) as Parent, 1 AS Level, CAST(id AS varchar(255)) AS LevelChar FROM Hier WHERE id = 1
UNION ALL
SELECT child_id AS id, hier.id AS Parent, Level + 1, CAST(LevelChar + '-' + CAST(child_id AS varchar(255)) AS varchar(255)) FROM Hier
JOIN cte ON Hier.id = cte.id
)
SELECT ISNULL(REPLICATE(Space(2) + '|',Level-1),'') + CAST(id AS Varchar(255)) FROM cte
ORDER BY LevelChar, ID
這正是我所需要的 – Wytas
你能告訴我們你的嘗試嗎?或解釋你嘗試過的邏輯? –
在客戶端而不是服務器端做所有格式化的東西。 –
@RaduGheorghiu我還沒有嘗試階段,因爲我只是不知道如何解決這個問題。 – Wytas