我在SQL Server下表(2012年):SQL Server的CTE和訂貨
MyTable的:
Id __ParentId Priority
1 NULL NULL
2 1 100
3 1 300
4 1 200
5 4 100
6 4 200
7 6 100
8 5 100
9 5 200
10 9 100
11 5 50
的__ParentId列引用標識知道父母的任何一行,它可以下降到很多級別的遞歸(例如,Id 8
是5
的孩子,它是4
的孩子,它是的孩子0)。
此外,還有一個優先列顯示孩子應該出現在父母(最低數量獲得優先)的順序。
所以,最後的表我想獲得的是:
Id __ParentId Priority Order
1 NULL NULL 1
2 1 100 2
4 1 200 3
5 4 100 4
11 5 50 5
8 5 100 6
9 5 200 7
10 9 100 8
6 4 200 9
7 6 100 10
3 1 300 11
爲了解釋觸摸,我們有2
是1
一個孩子,具有最高的優先級,但一直沒有孩子,所以,我們在那裏停留,然後4
是下一個優先的孩子,所以它接下來,但是然後我們根據優先級和等級分化爲它的孩子和他們的孩子。
或者,通過樹形結構來解釋:
1
2
4
5
11
8
9
10
6
7
3
我可以創建CTE,這將使我父母的孩子,但我不能想出一個好辦法,以獲得正確的排序,所以甚至不能提供我一直在嘗試的好SQL。
不錯 - 從來沒有考慮過我可以將第二個元素添加到層次結構ID +1 –
這個解決方案也嚇壞了美麗! - **非常感謝** - 我從來沒有想過/知道要做一個實際的文本串聯,它是** BRILLIANT **。這也同樣適用,我不能將你標記爲解決方案的唯一原因是因爲我必須選擇一個,約翰回答得更快......儘管我真的不能夠感謝你! –
@JohnBustos接受最適合你的答案。 –