我有一个最适用的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
答案 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