SQL按条件排序?

SQL按条件排序?,sql,sql-server-2008,Sql,Sql Server 2008,到目前为止,我有以下疑问: select dl from Dienstleistung as dl inner join dl.DienstleistungsOrte as dlo with dlo.ID = :raumID order by dl.Bezeichnung 可以订购两个有条件的圆柱吗 我想订的是贝泽奇农和索蒂伦格。条件应为: IF dl.Sortierung = 0 ---> order by dl.Bezeichnung and IF dl.Sortie

到目前为止,我有以下疑问:

select dl 
from Dienstleistung as dl inner join 
     dl.DienstleistungsOrte as dlo with dlo.ID = :raumID 
order by dl.Bezeichnung
可以订购两个有条件的圆柱吗

我想订的是贝泽奇农和索蒂伦格。条件应为:

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

如果
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

如果
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
试试这个:

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
    WHEN dl.Sortierung > 0 THEN dl.Sortierung 
  END
或:


第二行用ELSE第二行用ELSE