ich habe da wieder ein kniffliges Problem in meiner Base-embedded HSQLDB und möchte es wieder gerne per SQL lösen.
Folgende Situation:
Es gibt eine Tabelle "D_00_fehlende_Flugzeiten" integer,integer "AufgabenID", "fehlende Zeiten", siehe Bild: Ich möchte nun eine Abfrage generieren, die folgendes Ergebnis liefert:
Solange es unterhalb der maximalen AufgabenID, siehe unterer Abschnitt des Bildes, in diesem Beispiel das Abfrageergebnis "14", in der Spalte "fehlende Zeiten" eine Zahl größer 0 gibt, soll das Ergebnis die AufgabenID-1 liefern, also im linken Bild 5, im mittleren Bild 8.
Gibt es unterhalb der 14 keine Zahl größer 0, soll das Ergebnis 14 sein.
Für die beiden ersten Fälle habe ich folgende Lösung:
Code: Alles auswählen
select Min("AufgabenID")-1 as "geflogene_Wertungsdurchgaenge" FROM "D_00_fehlende_Flugzeiten" WHERE "fehlende Zeiten" > 0 AND "AufgabenID"<= SELECT "geplante_Wertungsdurchgaenge" FROM "B_07_geplante_Anzahl_Wertungsdurchgaenge"
Dummerweise liefert diese Abfrage für den letzten Fall, alles Nullen unterhalb der 14, das Ergebnis 0 und nicht 14.
Hat jemand eine Idee, DPunch kannst Du helfen?
Beste Grüße von Rik
Edit:
Habe es selber hinbekommen:
Code: Alles auswählen
select casewhen((select SUM ("fehlende Zeiten") from "D_00_fehlende_Flugzeiten" where "AufgabenID"<= SELECT "geplante_Wertungsdurchgaenge" FROM "B_07_geplante_Anzahl_Wertungsdurchgaenge")= 0,(SELECT "geplante_Wertungsdurchgaenge" FROM "B_07_geplante_Anzahl_Wertungsdurchgaenge"), Min("AufgabenID")-1) as "geflogene_Wertungsdurchgaenge" from "D_00_fehlende_Flugzeiten" where "fehlende Zeiten">0
Beste Grüße von Rik