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".

Antworten auf die Frage(2)

Ihre Antwort auf die Frage