PDA

View Full Version : Zusammenhängende Zeiträume zählen



RobertMack
25-04-19, 11:46
...darf ich auch mal die Kollegen mit dem schwarzen Gürtel in SQL um Hilfe bitten?

Aus dem folgenden Beispiel sollen zusammenhängende Zeiträume gezählt werden:

PERSNR, REISEVON, REISEBIS
000001, 2018-05-07, 2018-05-17
000001, 2018-05-18, 2018-05-20
000001, 2018-05-21, 2018-05-22
000001, 2018-06-01, 2018-06-10
000001, 2018-06-11, 2018-06-15
000002, 2018-10-01, 2018-10-10
000002, 2018-10-15, 2018-10-20

Als Ergebnis ist gewünscht:

PERSNR, COUNT
000001, 2
000002, 2

Herzlichen Dank vorab!

xenofob
25-04-19, 12:05
Select PERSNR, Count(*) from ****
Group by persnr, substr(cast (REISEVON as Char(26)), 1, 4)

Eine detailliertere Beschreibung ist unabdingbar.

B.Hauser
25-04-19, 12:54
Bisschen tricky aber sollte funktionieren.



Select x.PersNr, Count(*)
from YourTable x Left Join YourTable y
on x.PersNr = y.PersNr
and x.ReiseVon = y.ReiseBis + 1 Day
Where y.PersNr is NULL
Group By x.PersNr


Birgitta

Robi
25-04-19, 12:55
Ohne es probiert zu haben, aber ungefär so:

datei virtuel um 4. Feld erweitern reise bis + 1 tag und 5. feld status
PERSNR, REISEVON, REISEBIS, reisbis+1, status
000001, 2018-05-07, 2018-05-17, 2018-05-18
000001, 2018-05-18, 2018-05-20, 2018-05-21
000001, 2018-05-21, 2018-05-22, 2018-05-22
000001, 2018-06-01, 2018-06-10, 2018-06-10
000001, 2018-06-11, 2018-06-15, 2018-06-15
000002, 2018-10-01, 2018-10-10, 2018-10-11
000002, 2018-10-15, 2018-10-20 2018-10-21

setzen Status where exist persnr und reisevon = reisebis+1
zählen sätze ohne status

Robi

Birgitta war schneller (und besser)

RobertMack
25-04-19, 13:26
Vielen Dank ihr Lieben,
ihr habt mir das verlängerte Wochenende gerettet!