1

直到现在我有以下查询:

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
4

2 回答 2

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
于 2012-10-10T15:14:46.360 回答
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
于 2012-10-10T15:14:38.557 回答