我有一张这样的桌子:
Lat1 Lng1 Lat2 Lng2 ---- ---- ---- ---- 1 1 2 2 2 2 5 5 3 3 4 4 4 4 3 3 5 5 4 4
是否可以按以下顺序返回行?
Lat1 Lng1 Lat2 Lng2 ---- ---- ---- ---- 1 1 2 2 2 2 5 5 5 5 4 4 4 4 3 3 3 3 4 4
有一个独特的rowid
专栏。
(Lat1,Lng1)
和对将(Lat2,Lng2)
始终是唯一的。
lat1
and long1
of rown+1
必须与lat2
and long2
of row相同n
。
您可以使用分层递归 CTE 来执行此操作。
唯一的问题是你的数据中有一个循环,因为有
3,3
,4,4
和4,4
,3,3
。该
WHERE lat1=1 and lng1=1
部分指定层次结构的基础(在这种情况下,这可能是旅程的开始)。使用差异样本数据尝试我的脚本。
我认为你不需
Recursive CTE
要这样做。它工作在
Sql server 2012+
另请注意,在现实生活
CTE
中row_number
可能需要也可能不需要,具体取决于真实数据。这只是为了ordering
目的。