Ich möchte jetzt mit einer
SQL-Abfrage herrausfinden, welche Gerätenummer KEINE vortlaufenden Zeitscheiben hat.
fangen wir mal an, alle ohne Nachfolger zu suchen
Code:
select t1.*, t2.zeitscheibe as z1
from #test t1
left outer join #test t2 on t1.nummer=t2.nummer and t1.zeitscheibe=t2.zeitscheibe-1
order by t1.nummer, t1.zeitscheibe
und dasselbe für alle ohne Vorgänger, gleich mit rein verknüpft:
Code:
select t1.*, t2.zeitscheibe as z1, t3.zeitscheibe as z2
from #test t1
left outer join #test t2 on t1.nummer=t2.nummer and t1.zeitscheibe=t2.zeitscheibe-1
left outer join #test t3 on t1.nummer=t3.nummer and t1.zeitscheibe=t3.zeitscheibe+1
order by t1.nummer, t1.zeitscheibe
jetzt kann man an den fehlenden Inhalten der Spalten z1 und z2 erkennen, wer keinen Vorgänger bzw Nachfolger hat:
Code:
select t1.*, t2.zeitscheibe as z1, t3.zeitscheibe as z2
from #test t1
left outer join #test t2 on t1.nummer=t2.nummer and t1.zeitscheibe=t2.zeitscheibe-1
left outer join #test t3 on t1.nummer=t3.nummer and t1.zeitscheibe=t3.zeitscheibe+1
where (t2.zeitscheibe is null) and (t3.zeitscheibe is null)
order by t1.nummer, t1.zeitscheibe
welche Zeitscheibe fehlt, ist dann nur noch Mengenlehre