我有一个随机顺序的路由信息表,如下所示:
from to street
----------------------------------
92 91 Lange Poten
100 104 Bagijnestraat
85 79 Korte Poten
91 85 Plein
79 100 Bezuidenhoutseweg
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用路径信息找到一种方法来对其进行排序,其中当前行的to列与下一行的from列匹配.在示例中,我想要的顺序是:
from to street
----------------------------------
92 91 Lange Poten
91 85 Plein
85 79 Korte Poten
79 100 Bezuidenhoutseweg
100 104 Bagijnestraat
Run Code Online (Sandbox Code Playgroud)
from或to列上的简单ORDER BY 不起作用,因为数字顺序不正确.我正在尝试使用SQL或Excel查找方法.
SQL小提琴:http://sqlfiddle.com/#!2/9ebbb
小智 8
select a.*
from route a
start with a.rowid = (select min(rowid) from route )
connect by prior a.t = a.f;
Run Code Online (Sandbox Code Playgroud)
它将是SQL Server(2005+)
Declare @Routes Table([from] int, [to] int, [street] varchar(17))
INSERT INTO @Routes VALUES
(92, 91, 'Lange Poten'),
(100, 104, 'Bagijnestraat'),
(85, 79, 'Korte Poten'),
(91, 85, 'Plein'),
(79, 100, 'Bezuidenhoutseweg')
;With Cte AS
(
SELECT [from]
,[to]
,[street]
FROM @Routes
WHERE [from] = 92
UNION ALL
SELECT r.[from]
,r.[to]
,r. [street]
FROM @Routes AS r
JOIN Cte c
ON c.[to] = r.[from]
)
Select * From Cte
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |