0

私はそのような条件付きクエリを持っています:

  • 列 (順序) が 0 でない場合、値による順序付け 1 から 99999 (最大)
  • 姓の順にすべて 0 を並べる必要があります。

したがって、そのようなテーブルがある場合

ID   Order     Last Name
1     0        Manner
2     1        Brock
3     0        Lester
4     0        Annual
5     0        Greatly

私が期待する結果は次のとおりです。

Brock
Annual
Greatly
Lester
Manner

これが私のクエリです。毎回何が起こっているかというと、順序以外の 0 が最初に来ることなく、姓の並べ替えが行われているということです。

select c.last_name
from person_reports crt 
join person c 
where c.org_id = 1000 and crt.reports_to_id = 100389 and c.id = crt.contact_id 
order by c.last_name, case preference_num when 0 then 9999999 else preference_num end

私の現在の仕事の結果:

Annual
Brock
Greatly
Lester
Manner

助けてくれてありがとう

4

1 に答える 1

3

ORDER BY 句を次のように単純に逆にすることができます。

order by case preference_num when 0 then 9999999 else preference_num end, c.last_name

また、最初にセグメントをもう 1 つ追加すると、マジック '9999999' の使用を避けることができます。

order by case preference_num when 0 then 1 else 0 end, preference_num, c.last_name
于 2012-08-29T03:23:03.047 に答える