Im Moment habe ich die folgende Tabelle:SQL Tickets finden Offen zwischen Beginn- und Enddatum
+-----+-----------------------------+------------------------------+
| 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 |
+-----+-----------------------------+------------------------------+
Ich mag würde die Zählung der ID wissen, dass nicht an jedem Tag geschlossen wurden. So zum Beispiel möchte ich die Anzahl der offenen IDs auf 2017-07-26 00:00:00.000
wissen. Dies wäre in diesem Fall alles 3
.
Ein anderes Beispiel: Ich wüsste nicht die Anzahl der offenen IDs auf 2017-07-29 00:00:00.000
. Welches Ergebnis wäre 1
. Nur ID = 1 ist zu diesem Datum noch nicht geschlossen.
Ich habe versucht, hier auf StackOverflow eine andere Lösung zu verwenden, aber ich kann nicht recht verstehen, warum es mir falsche Ergebnisse gibt.
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