2013-05-15 2 views
0

Я делаю некоторые вычисления в SQL Query с помощью функции DateDiff. Мой расчет пошло не так, если DateDiff стоимость пришла в отрицательнойDateDiff возвращает отрицательное значение в sql

Declare @ActualTime Numeric(10,2)=677.00 

Select Convert(Numeric(10,2),(100*((@ActualTime-(Convert(Numeric(10,2),CONVERT(VARCHAR(10),SUM(DATEDIFF(Minute,VendorTicketRaisedOn ,ClosedOn))/60)+'.'+ 
     Right('00'+CONVERT(VARCHAR(2),SUM(DATEDIFF(Minute, VendorTicketRaisedOn , ClosedOn)) % 60),2))))/@ActualTime*1)))[AGS Uptime %] 
     From Ticket 

Две колонны VendorTicketRaisedOn & ClosedOn имеют типа DateTime. Если ClosedOn>VendorTicketRaisedOn Тогда значение Пришло в negetive.

Как обработать этот случай для получения результата как 0?

Если Значение находится в отрицательной, то DateDiff должен дать выход в 0 вместо -Value

DB: SQL SERVER 2008

+0

Не могли бы вы объяснить ваш вычисленного а немного? – Serge

ответ

1

Запрос:

Declare @ActualTime Numeric(10,2)=677.00 

SELECT CASE WHEN ClosedOn > VendorTicketRaisedOn 
      THEN 0 
     ELSE Convert(Numeric(10,2),(100*((@ActualTime-(Convert(Numeric(10,2),CONVERT(VARCHAR(10),SUM(DATEDIFF(MINUTE,VendorTicketRaisedOn ,ClosedOn))/60)+'.'+ Right('00'+CONVERT(VARCHAR(2),SUM(DATEDIFF(MINUTE, VendorTicketRaisedOn , ClosedOn)) % 60),2))))/@ActualTime*1))) 
     END AS [AGS Uptime %] 
FROM Ticket 
Смежные вопросы