我正在尋找數據庫任務的幫助,這可能會更容易通過一些對象編程語言來解決。此時我一直試圖找到它的TSQL/SQL Server解決方案。SQL Server中的網絡數據 - 標識單獨的路由
我使用一個包含有關路由數據的源表。每條記錄描述一條路由的鏈接,包括routeNo,originNodeID和destinationNodeID。從這個表中的數據的最複雜的例子看起來象下面這樣:
routeID originNodeID destinationNodeID
WRTV ... ...
WRTX 5 10
WRTX 10 15
WRTX 15 20
WRTX 20 25
WRTX 25 30
WRTX 25 1505
WRTX 25 2005
WRTX 30 35
WRTX 30 1005
WRTX 35 40
WRTX 40 45
WRTX 45 50
WRTX 1005 1010
WRTX 1015 1020
WRTX 1505 1510
WRTX 1510 1515
WRTX 2005 2010
WRTX 2010 2015
WRTX 2020 2025
WRTY .... ....
所以,你可以看到每個路由ID描述不是線性的路線,但與分支路線。該例的路線可能是這樣的:
1515 1020
/ /
/ /
5 ------ 25 --- 30 -------50
\
\
2025
現在,我需要做的就是肢解這條路線不同的途徑:
5-25-30-50 WRTX1 5-25- 30-1020 WRTX2 1515年5月25日WRTX3 2025年5月25日WRTX4
對於每一個新的路線我只需要連接順序像下面的:
routeID originNodeID destinationNodeID
WRTX1 5 10
WRTX1 10 15
WRTX1 15 20
WRTX1 20 25
WRTX1 25 30
WRTX1 30 35
WRTX1 35 40
WRTX1 40 45
WRTX1 45 50
WRTX2 5 10
WRTX2 10 15
WRTX2 15 20
WRTX2 20 25
WRTX2 25 30
WRTX2 30 1005
WRTX2 1005 1010
WRTX2 1015 1020
WRTX3 5 10
WRTX3 10 15
WRTX3 15 20
WRTX3 20 25
WRTX3 25 1505
WRTX3 1505 1510
WRTX3 1510 1515
WRTX4 5 10
WRTX4 10 15
WRTX4 15 20
WRTX4 20 25
WRTX4 25 2005
WRTX4 2005 2010
WRTX4 2010 2015
WRTX4 2020 2025
你有任何想法如何解決我的問題?最好我想在SQL Server中製作這個解決方案,但我在循環和遊標方面只有很少的經驗,在這種情況下可能很有用。一旦我做了一個ETL,但它只在路線分裂只有一個點時才起作用。
我將不勝感激任何幫助。
這是一個真正的圖形或從左到右顯示的層次結構嗎?它看起來像是要求所有*葉子*和它們到根的路徑,您可以添加[hierarchyid](https://msdn.microsoft .com/en-us/library/bb677290.aspx)。每個hierarchyid值本質上是對根的路徑進行編碼,將層次結構搜索轉換爲範圍搜索,這意味着您可以在hierarchyid列上使用索引來加快搜索速度 –
[將錶轉換爲分層結構](https://msdn.microsoft.com/en-us/library/bb677237.aspx)tu torial展示瞭如何將父/子錶轉換爲具有hierarchyid列的表。 –