我想通过添加一个2周容差片来调整下面的代码。与最小最大公差
它做什么它看起来当第一次客户(标识符)创建一个请求,并在第一次完成并计算之间发生的日子。
但是我试图添加一个公差片。其中说明了在这些日期之间发生的NCO数量,以及如果在完成日期的2周内发生的完成日期之后还有进一步的请求,那么也计算这些(同一请求的一部分)。完成日期的两周之后的任何事情都视为新请求。
CREATE TABLE #temp
(
Identifier varchar(40)NOT NULL
,Created_Date DATETIME NOT NULL
,Completed_Date DATETIME NULL
,SN_Type varchar(20) NOT NULL
,SN_Status varchar(20) NOT NULL
)
;
INSERT INTO #temp
VALUES ('3333333','2017-02-14 15:00:40.000','2017-02-15 00:00:00.000','Re-Activattion', 'COMP');
INSERT INTO #temp
VALUES ('3333333','2017-05-24 16:41:04.000','2017-06-05 00:00:00.000','Re-Activattion', 'N-CO');
INSERT INTO #temp
VALUES ('3333333','2017-05-25 11:49:54.000','2017-05-26 00:00:00.000','Re-Activattion', 'COMP');
INSERT INTO #temp
VALUES ('3333333','2017-06-27 10:24:29.000',NULL,'Re-Activattion', 'ACC');
@Alex你的代码是准确的只是我想可以选择记录创建第二次最小日期,所以结果的第2行应返回分钟日期为2017年5月24日16: 41:04.000。
select identifier
,case
when sum(case when SN_STATUS='COMP' and SN_TYPE = 'Re-Activattion' then 1 else 0 end)>0
then str(datediff(day
,MIN(case
when SN_TYPE = 'Re-Activattion'
then Created_Date
else null
end
)
,min(case
when (SN_TYPE = 'Re-Activattion'
and SN_STATUS='COMP'
)
then Completed_Date
else null
end
)
)
)
when sum(case when SN_TYPE='Re-Activattion' then 1 else 0 end)>0
then 'NOT COMP'
else 'NO RE-ACT'
end
as RE_ACT_COMPLETION_TIME
,Sum(CASE WHEN SN_STATUS = 'N-CO' THEN 1 ELSE 0 END) as [RE-AN NCO #]
from #temp
group by identifier
;
结果我终究:因为是特定的顺序启动和订单的结束没有明确的记录
可以提供其中NCO不计的样本数据? –