SQL条件与条件?

时间:2012-10-10 15:12:19

标签: sql sql-server-2008

直到现在我有以下查询:

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

是否可以订购具有条件的两个列?

我想要的是由dl.Bezeichnung和dl.Sortierung订购。条件应该是:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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