SQL Server:GPS坐标距离USING计算列

时间:2015-11-24 09:56:38

标签: sql-server gps calculated-columns

我有一张桌子,我正在每条记录上插入GPS坐标(纬度/经度)。

表模式如下:(Id,Time,Lat,Lon)

是否可以使用计算列计算两个连续记录的距离? 架构变得像这样:(Id,Time,Lat,Lon,Distanceof(ID -1,ID))

注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。

2 个答案:

答案 0 :(得分:1)

在计算列定义中直接使用其他行的值是不可能的,但可以创建用户定义的函数并使用它:

CREATE FUNCTION dbo.CalcDistance(@prev_row_id INT, @row_id INT)
AS 
  ...

然后将计算列表达式定义为dbo.CalcDistance(Id - 1, Id)

答案 1 :(得分:1)

您可以创建一个用于计算距离的函数Distanceof。 你可以选择

从表中选择id,时间,Lat,Lon,Distanceof(Lat,Lng,radius)。 它将计算每一行。但是,如果你要做很多行,它会耗费时间