Sql server 2008 案例评估第一条件
对案件陈述有点怀疑。我正在尝试查找两个日期之间的DateDiff,我发现一条记录的DateDiff(dd,StartDate,EndDate)=0。它不是显示绿色,而是显示红色。它正在评估第一个案例陈述。如何为我下面的陈述获取红色?请帮助Sql server 2008 案例评估第一条件,sql-server-2008,Sql Server 2008,对案件陈述有点怀疑。我正在尝试查找两个日期之间的DateDiff,我发现一条记录的DateDiff(dd,StartDate,EndDate)=0。它不是显示绿色,而是显示红色。它正在评估第一个案例陈述。如何为我下面的陈述获取红色?请帮助 Case When A.key =1 then Case when Datediff(dd,StartDate,EndDate) <90 then 'Red' when Datediff(dd,StartDate,En
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
...........................
案例
当A.key=1时,则
案例
当Datediff(dd,StartDate,EndDate)=0时,则为“绿色”
当Datediff(dd、StartDate、EndDate)为空时,则为“灰色”
还有“蓝色”
结束
其他的
...........................
问题在于,它满足了您在时为第一个设置的条件,因为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
案例
当DATEDIFF(dd、StartDate、EndDate)为空时,则为“灰色”
当DATEDIFF(dd,StartDate,EndDate)>=-89且DATEDIFF(dd,StartDate,EndDate)<0时,则为“黄色”
当DATEDIFF(dd,StartDate,EndDate)>=0且DATEDIFF(dd,StartDate,EndDate)<90时,则为“红色”
当DATEDIFF(dd、StartDate、EndDate)>=90时,则为“绿色”
结束
请注意,按照您的设置方式,您的ELSE
永远不会满足(即Blue
),因为所有可能的值都包含在其他WHEN
子句中。因此,有没有办法让我的Case SQL语句在显示结果之前评估所有条件?