【发布时间】:2015-08-07 08:03:56
【问题描述】:
我有一个表格,每行都有日期和纬度、经度值。我想要一个sql查询来计算一天的路程。
说日期2013-03-01我要总行程,
ID DATE LAT LONG V_ID
---------------------------------------------------
123 2013-03-01 06:05:24 45.544 86.544 1
124 2013-03-01 06:15:17 45.676 86.676 1
125 2013-03-01 06:25:24 46.544 86.544 2
126 2013-03-01 06:38:14 46.651 86.651 2
127 2013-03-02 07:12:04 46.876 86.876 1
128 2013-03-02 10:38:14 46.871 86.871 1
129 2013-03-02 10:56:14 46.871 86.671 2
130 2013-03-02 15:28:02 46.243 86.871 2
为了计算距离我写了一个sql函数:
CREATE FUNCTION [dbo].[fnCalcDistanceKM](@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT
AS
BEGIN
RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END
但我想要一天中行驶的总距离 2013-03-01 我有顶部 four row 并且我想要在 2013-03-01 中行驶的总距离
与此日期类似2013-03-02 有最后四行,我如何计算这些行的距离。
【问题讨论】:
-
请去掉mysql标签或sql-server标签。不能两者兼得
-
按日期分组,然后按 SUM(dbo.fnCalcDistanceKM(...))?
-
你使用的是哪个版本的sql server?如果您使用的是 SQL Server 2008 +,则可以使用
STDistance -
@ughai 我正在通过上述查询获得距离。我正在寻找查询以获取前四行和后四行的行驶距离(因为前四行有一个日期,其他有一个)
标签: sql sql-server database stored-procedures