logoff | Дата: Пятница, 01.02.2013, 15:36 | Сообщение # 1 |
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
| для SQL Standart (на MSDE может не работать, так как временная таблица создается через переменную... declare @t table ()Код set dateformat ymd
declare @t table (roww int, [device_code] varchar(20) ,[tele_time] datetime ,[server_time] datetime , [long]float , [lat]float , [valid]int , [speed]tinyint , [direction]int , [flags]int , [CurrentRun]int ,analog_data float) /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ insert into @t SELECT ROW_NUMBER() OVER(ORDER BY tele_Time), [device_code] ,[tele_time] ,[server_time] , [long], [lat], [valid], [speed], [direction], [flags], [CurrentRun],analog_data FROM [BN].[dbo].[SYS_DEV_ArchiveData] where device_code='25041767' and tele_time between '2013-01-30' and '2013-02-02' --and valid=1 order by tele_Time
select t2.roww,t2.tele_time, t2.lat,t2.long, t2.valid, t1.lat last_lat,t1.long last_long, t2.analog_data*1000 analog_data,t2.CurrentRun,t1.CurrentRun last_currentrun, t2.CurrentRun -t1.CurrentRun run_as_currun_razn, bn.dbo.SYS_GetDistanceOnEarth (t2.long,t2.lat,t1.long,t1.lat) dist_on_earth from @t as t1 inner join @t as t2 on t1.roww=t2.roww-1
где device_code='25041767' -- индетификатор прибора tele_time between '2013-01-30' and '2013-02-02' -- период с по даты на выходе таблица с колонками:
tele_time, lat,long,valid, -- показания тек точки last_lat, last_long -- коорд прошлой точки analog_data - показания аналогового датчика (одометра) умноженные на 1000 CurrentRun - показания по базе данных нарастающего пробега во флите (по ним считается пробег в отчетах) в метрах last_currentrun - показания нарастающего одометра в предыдущей точке во флите в метрах run_as_currun_razn - разница между тек и пред показаниями CurrentRun в метрах dist_on_earth - расстояние между тек и предыдущей точкой в метрах
|
|
| |