我正在使用 SQL Server 2008。我在查询中返回了这些数据,该查询看起来很像按 Day 和 ManualOrder 排序的...
ID Day ManualOrder Lat Lon
1 Mon 0 36.55 36.55
5 Mon 1 55.55 54.44
3 Mon 2 44.33 44.30
10 Mon 3 36.55 36.55
11 Mon 4 36.55 36.55
6 Mon 5 20.22 22.11
9 Mon 6 55.55 54.44
10 Mon 7 88.99 11.22
77 Sun 0 23.33 11.11
77 Sun 1 23.33 11.11
我想要做的是让这些数据按 Day 排序,然后是 ManualOrder ......但我想要一个行计数器(我们称之为 MapPinNumber)。问题是我希望这个行计数器在同一天再次遇到相同的纬度/经度时重复。然后,如果它是不同的纬度/经度,它可以继续使用下一行的下一行计数器。我们必须在最终结果中维护 Day、ManualOrder 排序。
我将在地图上绘制这些,这个数字应该代表我将以 ManualOrder 顺序绘制的引脚号。该数据代表驾驶员的路线,他可能在一天中的日程安排中多次前往相同的纬度/经度。例如,他开车去沃尔玛,然后是 CVS,然后又回到沃尔玛,然后是沃尔格林。我需要的 MapPinNumber 列应该是 1, 2, 1, 3。由于他周一多次去沃尔玛,但这也是他开车的第一个地方,所以它总是在地图上的 Pin #1。
这是我需要计算的 MapPinNumber 列的结果。我已经用 ROW_NUMBER 和 RANK 尝试了所有我能想到的方法,结果发疯了!我试图避免使用丑陋的 CURSOR。
ID Day ManualOrder Lat Lon MapPinNumber
1 Mon 0 36.55 36.55 1
5 Mon 1 55.55 54.44 2
3 Mon 2 44.33 44.30 3
10 Mon 3 36.55 36.55 1
11 Mon 4 36.55 36.55 1
6 Mon 5 20.22 22.11 4
9 Mon 6 55.55 54.44 2
10 Mon 7 88.99 11.22 5
77 Sun 0 23.33 11.11 1
77 Sun 1 23.33 11.11 1