2016-05-18 47 views
-4

Oracle SQL Developer中,我有一個需要被責令兩列:ORDER BY方法

一欄的名字是OLD_TABLE_NAME與所有的舊錶名。 另一列名是NEW_TABLE_NAME所有的新表名由 1)NEW_TABLE_NAME已經匹配OLD_TABLE_NAME

上市

我需要做的是 順序表列表

2)NEW_TABLE_NAME已經沒有匹配OLD_TABLE_NAME (NEW_TABLE_NAME的名稱將爲但OLD_TABLE_NAME會爲null)

3)OLD_TABLE_NAME有沒有匹配的NEW_TABLE_NAME(OLD_TABLE_NAME列將有名字,但NEW_TABLE_NAME列是NULL)

+0

歡迎來到SO;在這裏你可以找到[詢問]。請發佈一些樣品數據,期望的結果以及目前爲止您嘗試的內容。 – Aleksej

回答

0

它不是從問題清楚,但我的理解是像你想訂購首先通過匹配電影匹配的電影和導演,然後再休息:

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

謝謝喬治。這很接近,但我沒有使用變量。當我將@符號帶出來時,SQL腳本確實組織了列,但我想知道是否有其他方法。 –

+0

@ K.O。,你能收穫一些簡單的數據以及你期望得到的結果嗎? –

+0

@GiorgiNakeuri - 我支持我的評論。如果您在我的評論之後有時間檢查語法,那麼您可以在發佈之前完成相同的操作。修復你的帖子,我會收回我的downvote。解釋我的立場:新手上已經有很多垃圾了,我們不需要有經驗的球員也這樣做。 – mathguy

0

試試這個

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

對所需的電影和導演值使用綁定變量:

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

謝謝MTO,但這沒有奏效。 –

+0

@ K.O。您是否願意舉例說明(通過編輯您的問題)您的樣本數據和預期的輸出,並讓我知道「這是行不通的」。只是說「這不起作用」在幫助我找到可行的東西方面並不具有建設性。 – MT0

+0

您好MTO我只是編輯我的問題 –