我有一张桌子,我正在每条记录上插入GPS坐标(纬度/经度)。
表模式如下:(Id,Time,Lat,Lon)
是否可以使用计算列计算两个连续记录的距离? 架构变得像这样:(Id,Time,Lat,Lon,Distanceof(ID -1,ID))
注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。
答案 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)。 它将计算每一行。但是,如果你要做很多行,它会耗费时间