Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Проблема с запросом в MSSql


Автор: default_null 18.6.2008, 17:32
Есть 2 таблицы с данными, в одном отчеты с черного ящика в другои  отчеты водителеи , нужны только те водители ,которые занизили скорость передвижения  больше чем 1 раз за 2000 миль.

запрос :
Код

select  a.drivername,count(b.vehicle_id)as hardbrakes ,
sum(convert(decimal(9,1),a.tripendodometermiles)-convert(decimal(9,1),a.tripstartodometermiles))as miles,
sum(convert(decimal(9,1),a.tripendodometermiles)-convert(decimal(9,1),a.tripstartodometermiles))/2000 as miles2000each
from DriverTripReportData a LEFT JOIN 
TOLVehicleReport b ON a.VehicleName = b.vehicle_id 
where  convert(datetime,replace(replace(date_and_time,'a','AM'),'p','PM'))
        between convert(datetime,substring(tripbegindatetime,1,19),126)
            and convert(datetime,substring(tripenddatetime,1,19),126)
 and convert(datetime,replace(replace(date_and_time,'a','AM'),'p','PM'))
    between '05/01/2008' and '05/31/2008 23:59:59'
    and b.reason = 'Rapid Deceleration'
   and a.xactivity_id='TripBegin'
 group by drivername
having 
( count(b.vehicle_id))-
(sum(convert(decimal(9,1),a.tripendodometermiles)-convert(decimal(9,1),a.tripstartodometermiles))/2000 )>1



выдает почти то что надо , но в некоторых строчках неправильно выводит сумму проиденных миль 
то есть 
Код

sum(convert(decimal(9,1),a.tripendodometermiles)-convert(decimal(9,1),a.tripstartodometermiles))as miles

указанная цифра  меньше нужнои ,словно пропускает одну строку при подсчете

не подскажите в чем может быть дело или как переделать этот запрос в хранимую процедуру ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)