2016-05-18 12 views
-4

In Oracle SQL Entwickler, ich habe zwei Spalten, die bestellt werden müssen:Sortieren nach Methoden

Ein Spaltenname ist OLD_TABLE_NAME mit all den alten Tabellennamen. Ein weiterer Spaltenname ist new_table_name mit all den neuen Tabellennamen

aufgeführt

Was ich brauche ist Sortieren nach 1) new_table_name die Tabellenliste zu tun, die einen angepaßten OLD_TABLE_NAME

2) new_table_name haben, die nicht abgestimmt OLD_TABLE_NAME haben (new_table_name würde Namen haben, aber die OLD_TABLE_NAME wäre null)

3), die keine abgeglichen OLD_TABLE_NAME new_table_name (OLD_TABLE_NAME Spalte haben würde Namen haben, aber die Spalte new_table_name wäre nULL)

+0

Willkommen zu SO; Hier finden Sie [fragen] .Bitte senden Sie einige Beispieldaten, das gewünschte Ergebnis und was Sie bisher versucht haben. – Aleksej

Antwort

0

Es ist von der Frage nicht klar, aber ich verstand es, wie Sie durch passende Film und Regisseur zuerst bestellen möchten und dann durch Film passend und dann den Rest:

order by case when movie = :movie and director = :director then 1 
       when movie = :movie then 2 
       else 3 end 
+0

Danke Giorgi. Das ist knapp, aber ich verwende keine Variablen. Als ich das @ -Symbol herausnahm, organisierte das SQL-Skript die Spalten, aber ich frage mich, ob es einen anderen Weg gibt. –

+0

@ K.O., Können Sie einige einfache Daten sehen und was erwarten Sie davon? –

+0

@GiorgiNakeuri - Ich stehe zu meinem Kommentar. Wenn Sie nach meinem Kommentar Zeit hätten, die Syntax zu überprüfen, hätten Sie vor dem Posten genau das Gleiche tun können. Fix deinen Post und ich werde meinen Downvote zurücknehmen. Um meine Position zu erklären: Es gibt schon eine Menge Müll von den Novizen auf SO; Wir brauchen keine erfahrenen Spieler, die dasselbe tun. – mathguy

0

Versuchen Sie, diese

select * 
from (
select 1 as rank, movie as movie, director as director 
from yourtable 
where director is not null 

union all 

select 2, movie, '' 
from yourtable 
where director is null) movies 

order by rank, movie asc 
0

Verwenden von Bindevariablen für die erforderlichen Film- und Direktorwerte:

SELECT * 
FROM  table_name 
WHERE movie = :movie 
OR  director = :director 
ORDER BY movie NULLS LAST, 
     director NULLS LAST 
+0

Danke MTO, aber das hat nicht funktioniert. –

+0

@ K.O. Würden Sie gerne ein Beispiel geben (indem Sie Ihre Frage bearbeiten), Ihre Beispieldaten und die erwartete Ausgabe und lassen Sie mich wissen, wie "das nicht funktioniert hat". Die Aussage "das hat nicht funktioniert" hilft mir nicht, etwas zu finden, das funktioniert. – MT0

+0

Hi MTO Ich bearbeite nur meine Frage –