嵌套总和、datediff 和 case 语句
Nest sum,datediff and case statement
我有一个table这样的,
SELECT rd_rfiledelayid_pk,
rd_rfileid_fk_ind,
rd_enddate
FROM t_rfiledelay
WHERE rd_rfileid_fk_ind = '4873'
- 我需要通过外键 (
RD_RfileID_fk_ind
) 获得结果作为 date different summery 组,标准是 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 to 2016-06-25 = 5 days
2016-07-01 to today (2016-07-07) = 6 days
and result need to be 11 days.
你能告诉我我在这里想念什么吗?
这是您想要的查询:
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
; =
当其中一个(或两个)参数为 NULL
.
时,returns 永远不会为真
无论如何,COALESCE()
比CASE
更简单。
我有一个table这样的,
SELECT rd_rfiledelayid_pk,
rd_rfileid_fk_ind,
rd_enddate
FROM t_rfiledelay
WHERE rd_rfileid_fk_ind = '4873'
- 我需要通过外键 (
RD_RfileID_fk_ind
) 获得结果作为 date different summery 组,标准是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 to 2016-06-25 = 5 days
2016-07-01 to today (2016-07-07) = 6 days
and result need to be 11 days.
你能告诉我我在这里想念什么吗?
这是您想要的查询:
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
; =
当其中一个(或两个)参数为 NULL
.
无论如何,COALESCE()
比CASE
更简单。