0
나는 현재 다음과 같은 테이블이 : 나는 각 날짜에 휴무되지 않은 ID 년대의 수를 알고 싶습니다SQL은 시작일과 종료일 사이에 오픈 티켓을 찾기
+-----+-----------------------------+------------------------------+
| ID | StartDate | EndDate |
+-----+-----------------------------+------------------------------|
| 1 | 2017-07-24 08:00:00.000 | 2017-07-29 08:00:00.000 |
| 2 | 2017-07-25 08:00:00.000 | 2017-07-28 08:00:00.000 |
| 3 | 2017-07-25 08:00:00.000 | 2017-07-26 08:00:00.000 |
+-----+-----------------------------+------------------------------+
합니다. 예를 들어, 열린 ID의 수를 2017-07-26 00:00:00.000
에 알 수는 없습니다. 이 경우 모두 3
입니다.
다른 예 : 열린 ID의 수를 2017-07-29 00:00:00.000
에 알 수는 없습니다. 결과는 1
입니다. ID = 1 만 해당 날짜에 아직 폐쇄되지 않았습니다.
여기 StackOverflow에서 다른 솔루션을 사용해 보았습니다. 그러나 왜 이것이 잘못된 결과를 초래하는지 알 수 없습니다.
declare @dt date, @dtEnd date
set @dt = getdate()-7
set @dtEnd = dateadd(day, 100, @dt);
WITH CTEt1 (SupportCallID, StartDate, EndDate, Onhold)
as
(SELECT SupportCallID
,OpenDate
,MAX(CASE WHEN StatusID IN('19381771-8E81-40C5-8E36-62A7DB0A2A99', '95C7A5FB-2389-4D14-9DAE-A08BFCC3B09A', 'D5429790-3B43-4462-9E1E-2466EA29AC74') then CONVERT(DATE, LastChangeDate) end) EndDate
,OnHold
FROM [ClienteleITSM_Prod_Application].[dbo].[SupportCall]
group by SupportCallID, OpenDate, OnHold
)
SELECT dates.myDate,
(SELECT COUNT(*)
FROM CTEt1
WHERE myDate BETWEEN StartDate and EndDate
)
FROM
(select dateadd(day, number, @dt) mydate
from
(select distinct number from master.dbo.spt_values
where name is null
) n
where dateadd(day, number, @dt) < @dtEnd) dates