如果Case语句将负数更改为零,则为SQL

时间:2017-04-21 01:26:04

标签: sql-server

我有一个最适用的SQL语句。我需要从总和中减去2,但是如果这不会导致负数。如果它确实导致负数,那么我需要一个零。我不能使用我必须使用Sum的计数。 基本上我正在做的是,如果任务完成本周计算-2,但这导致负数,而我可以在本周完成零任务,本周我不会有负2。 -2是必要的,因为我可以消除其他一些在总数中计算的字段。

问题:如果不能产生负数

,如何将其写入仅减去2
,SUM(case when
 T.[TaskFinishDate] <= DATEADD(DAY, 8-DATEPART(DW, GETDATE()), 
Convert(date,getdate()))  then 1 
    else 0 
    end) - 2 AS Planned

1 个答案:

答案 0 :(得分:0)

您可以检查case是否有&lt; 0值,小于零时返回0:

case when
    SUM(
        case when t.[TaskFinishDate] <= DATEADD(DAY, 8-DATEPART(DW, GETDATE()), Convert(date,getdate()))then 1 else 0 end) - 2 < 0 
        then 0 
        else 
            SUM(case when t.[TaskFinishDate] <= DATEADD(DAY, 8-DATEPART(DW, GETDATE()), Convert(date,getdate())) then 1 else 0 end) - 2
end planned