Ich möchte die missing NON-consecutive dates
zwischen zwei aufeinander folgenden Datum finden.Suchen nicht aufeinander folgenden Datum in SQL Server
Ich posten meine SQL-Abfrage und temporäre Tabellen, um die Ergebnisse zu finden.
Aber ich bin nicht die richtigen Ergebnisse zu erzielen
Hier ist meine SQL Query
drop table #temp
create table #temp(an varchar(20),dt date)
insert into #temp
select '2133783715' , '2016-10-16' union all
select '5107537880' , '2016-10-15' union all
select '6619324250' , '2016-10-15' union all
select '7146586717' , '2016-10-15' union all
select '7472381321' , '2016-10-12' union all
select '7472381321' , '2016-10-13' union all
select '7472381321' , '2016-10-14' union all
select '7472381321' , '2016-10-24' union all
select '8186056340' , '2016-10-15' union all
select '9099457123' , '2016-10-12' union all
select '9099457123' , '2016-10-13' union all
select '9099457123' , '2016-10-14' union all
select '9099457123' , '2016-10-23' union all
select '9099457123' , '2016-11-01' union all
select '9099457123' , '2016-11-02' union all
select '9099457123' , '2016-11-03' union all
select '9165074784' , '2016-10-16'
drop table #final
SELECT an,MIN(dt) AS MinDate,MAX(dt) AS MaxDate, COUNT(*) AS ConsecutiveUsage
--DateDiff(Day,LAG(MAX(dt)) OVER (partition by an ORDER BY an),MAX(dt)) nonusageDate
into #final
FROM(
SELECT an,dt,
DATEDIFF(D, ROW_NUMBER() OVER(partition by an ORDER BY dt),dt) AS Diff
FROM #temp c
)P
GROUP BY an,diff
select * from #final order by 1
an MinDate MaxDate ConsecutiveUsage
2133783715 2016-10-16 2016-10-16 1
5107537880 2016-10-15 2016-10-15 1
6619324250 2016-10-15 2016-10-15 1
7146586717 2016-10-15 2016-10-15 1
7472381321 2016-10-12 2016-10-14 3
7472381321 2016-10-24 2016-10-24 1
7472381321 2016-10-27 2016-10-28 1
8186056340 2016-10-15 2016-10-15 1
9099457123 2016-10-12 2016-10-14 3
9099457123 2016-10-23 2016-10-23 1
9165074784 2016-10-16 2016-10-16 1
Aber ich will Ergebnisse Nichtnutzung Datum.
Ich möchte die AN erhalten, die seit 10 Tagen nicht mehr benutzt wurde.
Also hier Ausgabe sollte wie folgt sein: -
an minusagesdate maxusagedate ConsecutiveNotUseddays
7472381321 2016-10-15 2016-10-23 9
7472381321 2016-10-25 2016-10-26 2
9099457123 2016-10-15 2016-10-22 8
So finden Sie heraus, ich will nur nur in Folge nicht verwendet Daten zählen und ihre Min- und Max-Termine.
Warum ist ConsecutiveNotUseddays 10 und 11? Ich kann nicht sehen, wo diese Zahlen herkommen. – BeanFrog
Ich möchte aufeinander folgende Daten von nicht verwendet werden. wie für ein 7472381321 min Datum 2016-10-12 und maximales Datum ist 2016-10-14. Danach begann er am 2016-10-24 zu verwenden. also möchte ich keine Verwendungsdaten wie diese 7472381321 mindate 2016-10-15 und maxdate - 2016-10-23 und zählen: 8. –