Oracle bestellen von für verschiedene Bedingungen
Ich habe eine Anfrage und möchte zwei Arten von Bestellungen auf der Grundlage einer Bedingung aufgeben.
Wenn zum Beispiel ein Feld NULL ist, muss ich eine Bestellung aufgeben, und wenn nicht, muss ich eine andere Bestellung aufgeben. Wie kann ich es tun
select *
from table_1 t
order by (if t.field1 is null then
order by t.field2 DESC, field3 ASC
else
order by t.field4 ASC, field5 DESC)
Dies ist ein Beispielcode: Ich möchte eine andere Reihenfolge (ASC / DESC und verschiedene Spalten) festlegen, basierend auf dem Wert von FIELD1
BEISPIE
BEDING
ID FIELD1 FIELD2 FIELD3 FIELD4 FIELD5
1 1 2 3 4 5
2 NULL 6 7 8 9
DATE
ID PARENT_ID DATA1 DATA2 DATA3
1 1 X Y J
2 1 Z W U
3 2 XY YX O
4 2 ZW WZ I
select d.*
from data d, conditional c
where d.parent_id = c.id
and d.parent_id = 1
order by
case
when c.field1 is null then
data1 asc, data2 desc
else
data3 asc, data1 desc
end
In diesem Beispiel wähle ich die DATA-Zeilen EINS und ZWEI (die Zeilen mit der Eltern-ID = 1). Nachdem ich diese Entscheidung getroffen habe, möchte ich die DATA-Spalten basierend auf dem Wert der CONDICTIONAL.FIELD1-Spalte ändern. Ich hoffe jetzt ist mehr sauber.
Sicher, diese Abfrage funktioniert, aber das ist "was ich brauche".