Seite 1 von 1

[gelöst] Aufeineinderfolgende Nullen zählen

Verfasst: Mo, 09.05.2011 19:00
von F3K Total
Hallo zusammen,
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:
geflogene_Durchgänge.png
geflogene_Durchgänge.png (22.84 KiB) 653 mal betrachtet
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
Wenn jemand eine kürzere Variante finden würde, würde ich mich freuen.

Beste Grüße von Rik