Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 如果Case语句返回负数并将其更改为零,则返回SQL_Sql Server - Fatal编程技术网

Sql server 如果Case语句返回负数并将其更改为零,则返回SQL

Sql server 如果Case语句返回负数并将其更改为零,则返回SQL,sql-server,Sql Server,我有一个SQL语句,在大多数情况下运行良好。我需要从总数中减去2,但如果这不会导致一个负数的话。如果结果是负数,那么我需要一个零。我不能用计数,我得用总和。 基本上,我正在做的是,如果任务本周完成,将其计数为-2,但结果是负数,虽然我本周可以没有任务到期,但本周不能有负2到期。-2是必需的,因为我无法消除一些其他字段,这些字段将计入总数 问题:如果不产生负数,我怎么写这个来只减去2呢 ,SUM(case when T.[TaskFinishDate] <= DATEADD(DAY, 8-

我有一个SQL语句,在大多数情况下运行良好。我需要从总数中减去2,但如果这不会导致一个负数的话。如果结果是负数,那么我需要一个零。我不能用计数,我得用总和。 基本上,我正在做的是,如果任务本周完成,将其计数为-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
,求和(当

T.[TaskFinishDate]您可以检查您的
案例
是否有<0的值,如果小于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
发生时的情况
总数(
如果t.[TaskFinishDate]不难执行(例如,
ISNULL(NULLIF(NULLIF(SUM(…),0),1)-2,0)
就可以了),但理论上,您应该修复查询,这样其他字段就不会被计算在内。