我想通過添加一個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不計的樣本數據? –