我有一张这样的表,
SELECT rd_rfiledelayid_pk,
rd_rfileid_fk_ind,
rd_enddate
FROM t_rfiledelay
WHERE rd_rfileid_fk_ind = '4873'
RD_RfileID_fk_ind
)获得日期不同夏日组的结果,并且条件是NULL
RD_EndDate今天获得日期。因为我这样试过,
SELECT rd_rfileid_fk_ind,
Sum(Datediff(day, rd_startdate, CASE
WHEN rd_enddate = NULL THEN Getdate()
ELSE rd_enddate
END)) AS ES_SubmittorDelays
FROM t_rfiledelay
WHERE rd_rfileid_fk_ind = '4873'
GROUP BY rd_rfileid_fk_ind
我得到了结果,
但结果需要这样,
2016-06-20至2016-06-25 = 5天
2016-07-01至今(2016-07-07)= 6天
结果需要11天。
你能告诉我我想念的是什么吗?
答案 0 :(得分:1)
这是您想要的查询:
SELECT RD_RfileID_fk_ind,
SUM(DATEDIFF(day, RD_Startdate, COALESCE(RD_EndDate, GETDATE() ))
) as ES_SubmittorDelays
FROM t_RfileDelay
WHERE RD_RfileID_fk_ind = '4873'
GROUP BY RD_RfileID_fk_ind;
您的问题是= NULL
。正确的语法是IS NULL
;当{(1}}中的任何一个(或两个)都是=
时,NULL
永远不会返回true。
无论如何,COALESCE()
比CASE
更简单。