Этот вопрос близко к этому:
Вот моя таблица:
Longtitude Latitude Velocity Time
102 401 40 2010-06-01 10:22:34.000
103 403 50 2010-06-01 10:40:00.000
104 405 0 2010-06-01 11:00:03.000
104 405 0 2010-06-01 11:10:05.000
105 406 35 2010-06-01 11:15:30.000
106 403 60 2010-06-01 11:20:00.000
108 404 70 2010-06-01 11:30:05.000
109 405 0 2010-06-01 11:35:00.000
109 405 0 2010-06-01 11:40:00.000
105 407 40 2010-06-01 11:50:00.000
104 406 30 2010-06-01 12:00:00.000
101 409 50 2010-06-01 12:05:30.000
104 405 0 2010-06-01 11:05:30.000
Я хочу суммировать времена, когда механизм остановился (скорость = 0), включайте: это остановилось, с тех пор, "когда", к "когда", в сколько минут, сколько раз это остановило и сколько времени это остановилось.
Я записал этот запрос, чтобы сделать это:
select longtitude, latitude, MIN(time), MAX(time), DATEDIFF(minute, MIN(Time), MAX(time))
as Timespan from table_1 where velocity = 0 group by longtitude,latitude
select DATEDIFF(minute, MIN(Time), MAX(time)) as minute into #temp3
from table_1 where velocity = 0 group by longtitude,latitude
select COUNT(*) as [number]from #temp
select SUM(minute) as [totaltime] from #temp3
drop table #temp
Этот возврат запроса:
longtitude latitude (No column name) (No column name) Timespan
104 405 2010-06-01 11:00:03.000 2010-06-01 11:10:05.000 10
109 405 2010-06-01 11:35:00.000 2010-06-01 11:40:00.000 5
number
2
totaltime
15
Вы видите, это хорошо работает, но мне действительно не нравится #temp таблица. Там должен так или иначе запросить это без использования временная таблица?
Спасибо.
Вы не можете вкладывать агрегаты в SQL Server (например, SUM (DATEDIFF (минута, MIN (время), MAX (время)))
, но можете использовать производную таблицу вместо временной.
SELECT SUM(minute) FROM
(
select DATEDIFF(minute, MIN(Time), MAX(time)) as minute
from table_1 where velocity = 0 group by longtitude,latitude
) derived