2016-02-01 2 views
0

Не сомневайтесь в утверждении дела. Я пытаюсь найти DateDiff между двумя датами, и я нашел для одной записи, я получаю Datediff (dd, StartDate, EndDate) = 0. Вместо того, чтобы показывать Green его отображение Red.Its, оценивая первый оператор case.How, чтобы получить красный цвет для моего ниже заявления? Пожалуйста, помогитеОценка состояния первого состояния

Case  
When A.key =1 then 
Case  
when Datediff(dd,StartDate,EndDate) <90 then 'Red' 
    when Datediff(dd,StartDate,EndDate) <0 and Datediff(dd,StartDate,EndDate) >=-89 then 'yellow' 
when Datediff(dd,StartDate,EndDate) >=0 then 'Green' 
when Datediff(dd,StartDate,EndDate) is null then 'Grey' 
else 'Blue' 
end 
    else 
........................... 

ответ

0

проблемы это удовлетворяющий условию вы установили для первого WHEN, потому что 0 меньше 90.

вы должны организовать свои условия, чтобы сделать их взаимоисключающими , например:

CASE 
    WHEN DATEDIFF(dd,StartDate,EndDate) IS NULL THEN 'GREY' 
    WHEN DATEDIFF(dd,StartDate,EndDate) >= -89 AND DATEDIFF(dd,StartDate,EndDate) < 0 THEN 'YELLOW' 
    WHEN DATEDIFF(dd,StartDate,EndDate) >= 0 AND DATEDIFF(dd,StartDate,EndDate) < 90 THEN 'RED' 
    WHEN DATEDIFF(dd,StartDate,EndDate) >= 90 THEN 'GREEN' 
END 

Обратите внимание, что вы установили его, ваш ELSE никогда не будет выполнен (т. Blue), поскольку все возможные значения охватываются другими статьями WHEN.

+0

Так можно ли каким-либо образом сделать свое заявление SQL-запроса для оценки всех условий перед показом результатов? – SuperKings

+0

Нет. Смотрите мое обновление. –

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