Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 案例评估第一条件_Sql Server 2008 - Fatal编程技术网

Sql server 2008 案例评估第一条件

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

对案件陈述有点怀疑。我正在尝试查找两个日期之间的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,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语句在显示结果之前评估所有条件?