2012-10-10 95 views
1

到現在爲止,我有以下查詢:SQL按條件排序?

select dl 
from Dienstleistung as dl inner join 
    dl.DienstleistungsOrte as dlo with dlo.ID = :raumID 
order by dl.Bezeichnung 

是否有可能二階colums符合條件?

我想要的是由dl.Bezeichnung和dl.Sortierung命令。條件應該是:

IF dl.Sortierung = 0 ---> order by dl.Bezeichnung 
and 
IF dl.Sortierung > 0 --->order by dl.Sortierung 

回答

2

如果dl.Sortierung可以< 0或null,這樣做:

order by case 
    when dl.Sortierung = 0 then dl.Bezeichnung 
    when dl.Sortierung > 0 then dl.Sortierung 
    else SomeOtherColumn 
end 

否則,如果dl.Sortierung總是> = 0,做

order by case 
    when dl.Sortierung = 0 then dl.Bezeichnung 
    else dl.Sortierung 
end 
+0

感謝您的幫助! – Paks

5

試試這個:

ORDER BY 
    CASE 
    WHEN dl.Sortierung = 0 THEN dl.Bezeichnung 
    WHEN dl.Sortierung > 0 THEN dl.Sortierung 
    END 

或者:

ORDER BY 
    CASE 
    WHEN dl.Sortierung = 0 THEN dl.Bezeichnung 
    ELSE dl.Sortierung 
    END 
+0

打敗我,而且格式化得更好! :) +1 – mwigdahl

+0

第二行只是使用ELSE – Gidil