Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

"Case" "Order By Nulls First" und Substring -> falsche Sortierung

  Alt 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
  Mit Zitat antworten Zitat