Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
Delphi 10.4 Sydney
|
"Case" "Order By Nulls First" und Substring -> falsche Sortierung
24. Jan 2020, 11:43
Datenbank: FB • Version: 2 • Zugriff über: IBDAC
Hallo,
ich habe hier einen merkwürdigen Fall.
Erst mal der Hintergrund.
Ich will einen Report erstellen, sortiert nach dem Quartal.
Das Feld hat folgendes Format QJJJJ (Q=Quartal, J=vierstelliges Jahr).
Also z.B.
42019
12020
Und nun kommts.
Es gibt auch Dummy-Datensätze, da steht nur ein "I" drin.
Ändern kann ich das nicht, ich muss damit leben.
Diese I's will ich ganz oben haben.
Ich habe dann überlegt.
SQL1:
Select Feld
From Tabelle
Order By substring(1 from 2 for 4)||substring(1 from 1 for 1)
Jetzt steht das I ganz unten, die Quartale sind aber korrekt eingeordnet.
SQL2:
Es gibt ja Nulls First, also
Select
case Feld
when "I" then NULL
else Feld
end
From Tabelle
Order By substring(1 from 2 for 4)||substring(1 from 1 for 1) Nulls First
Klappt nicht, die Null-Werte stehen ganz unten
Meine Notlösung
SQL3:
Select * From
(
Select
case Feld
when "I" then NULL
else Feld as SuchFeld
end
From Tabelle
Order By substring(1 from 2 for 4)||substring(1 from 1 for 1)
)
Order By SuchFeld Nulls First
Nicht schön, aber warum klappt SQL2 nicht?
Laut Doku liefert substring(NULL) NULL zurück
und NULL||NULL ist auch NULL.
Das ist auch tatsächlich so.
SQL3 reicht ja erst mal, aber SQL2 gefällt mir besser.
Heiko
|