2015-10-08 6 views
0

Я пытаюсь создать SQL-запрос, который возвращает количество лет, в течение которых сотрудник был нанят в возрасте 41 года, в зависимости от даты его рождения и даты начала. Но, очевидно, некоторым сотрудникам в возрасте до 41 года. Для них я хотел бы вернуть ноль, но моя текущая попытка возвращает негативы.Круглые отрицательные числа до нуля

Как я могу «округлить» минусы до нуля?

select EmployeeNo, EmployeeFName, EmployeeLName, 
DATEDIFF(hour,DateOfBirth,GETDATE())/8766 AS Age, 
DATEDIFF(hour,StartDate,GETDATE())/8766 AS LengthOfService, 
DATEDIFF(hour,DateOfBirth,GETDATE())/8766 - 41 AS YearsOver41 
from Employees 
+1

Вы пробовали делопроизводство? CASE DATEDIFF (час, DateOfBirth, GETDATE())/8766 - 41 <0 THEN 0 ELSE DATEDIFF (час, DateOfBirth, GETDATE())/8766 - 41 END YearsOver41 – Gene

ответ

1
select EmployeeNo, EmployeeFName, EmployeeLName, 
    DATEDIFF(hour,DateOfBirth,GETDATE())/8766 AS Age, 
    DATEDIFF(hour,StartDate,GETDATE())/8766 AS LengthOfService, 

    CASE 
     WHEN DATEDIFF(hour,DateOfBirth,GETDATE())/8766 - 41) < 0 THEN 0 
     ELSE DATEDIFF(hour,DateOfBirth,GETDATE())/8766 - 41 
    END AS YearsOver41 

from Employees 
2
CASE WHEN X < 0 THEN 0 ELSE X END 

, где Х представляет собой числовой столбец или выражение, которое может быть отрицательным.

Смежные вопросы