24.04.2024
Эффективная Навигация М2М
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум (скрипты, вопросы...) » CyberFleet » Скрипты для CyberFleet, CrossPoint » Сравнение пробега по ТС по одометру и карте (выводит разницу в метрах за период)
Сравнение пробега по ТС по одометру и карте
logoffДата: Вторник, 17.01.2012, 13:52 | Сообщение # 1
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Code

declare @start datetime, @stop datetime
declare @t table (ObjectID int,ObjectGarNum varchar(20),Run_Map float,Run_Odometr float )
select @start='17/01/2012 00:00:00.000', @stop='18/01/2012 00:00:00.000'
insert into @t
select ObjectID,ObjectGarNum,  
[bn_patp_dob].[dbo].[CF_GetRunForMap] (ObjectID,@start,@stop) as Run_Map,
bn.dbo.FLEET_GetRun (ObjectID,@start,@stop) as Run_Odometr
from bn.dbo.FLEET_Object
where ObjectActive=1
and ObjectGarNum like '%431%' -- гарадный номер или его часть. фильтр можно опустить

select ObjectID,ObjectGarNum,Run_Map ,Run_Odometr, Run_Odometr-Run_Map  as razn, case Run_Map when 0 then 0 else abs((Run_Odometr-Run_Map)/Run_Map*100) end [proc]
from @t
GO


Скрипт для БД "BN" - если у вас БД называется по другому - нужно исправление
Проверена работа на 1,17,2,1

на выходе таблица, номерТС, Гаражный номер, Пробег по карте, пробег по одометру, разница пробегов, разница в процентах
 
logoffДата: Четверг, 19.01.2012, 13:31 | Сообщение # 2
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
приведенный в посте 1 скрипт в работе использует функцию
[bn_patp_dob].[dbo].[CF_GetRunForMap]
привожу ее код для размещение в базе данных bn_patp_dob

Code


USE [bn_patp_dob] -- имя базы данных
GO

/****** Object:  UserDefinedFunction [dbo].[CF_GetRunForMap]    Script Date: 01/19/2012 13:30:30 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:  Бондарь Михаил
-- Create date: 12-12-2011
-- Description:    возвращает пробег по трактории
-- =============================================
CREATE FUNCTION [dbo].[CF_GetRunForMap]  
(
  @objectid int,@starttime datetime, @stoptime datetime
)

  returns float as /****** Сценарий для команды SelectTopNRows среды SSMS  ******/
begin
declare @run float
declare @lat float,@long float, @lastlong float, @lastlat float
declare cur cursor local read_only for
select lat,long from bn.dbo.sys_dev_archivedata
where @objectid=ObjectID and tele_time between @starttime and @stoptime and valid=1
set @run=0
open cur
while 0=0 begin
fetch next from cur into @lat,@long
if @@FETCH_STATUS!=0 break
if @lastlong is not null
select @run=@run+bn.[dbo].[SYS_GetDistanceOnEarth] (@lastlong,@lastlat,@long,@lat)
select @lastlong=@long, @lastlat=@lat
end

return @run

END

GO

 
Форум (скрипты, вопросы...) » CyberFleet » Скрипты для CyberFleet, CrossPoint » Сравнение пробега по ТС по одометру и карте (выводит разницу в метрах за период)
  • Страница 1 из 1
  • 1
Поиск:

LogOff © 2024
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС