我有一个包含3列(id,日期,数字)的表,数字是从1到9999的值。一旦达到9999,所有系列都将更改为负数(又称-1到-9999),并且从1开始。
这是我的查询:
select id,date,number
from table
order by date DESC, abs(number) DESC
得到以下结果:
26 3.1.17 5
25 3.1.17 4
21 2.1.17 -9999
3 2.1.17 -9998
4 2.1.17 -9997
51 2.1.17 3
6 2.1.17 2
7 2.1.17 1
10 1.1.17 -9996
基本上按日期对数据进行排序,然后按数字列对数据进行排序。由于排序是按日期进行的,因此它在大多数情况下都有效,但是在将数字从更改-9999
为1
顺序的日期中,情况会混乱。
这应该是结果
id date number
26 3.1.17 5
25 3.1.17 4
51 2.1.17 3
6 2.1.17 2
7 2.1.17 1
21 2.1.17 -9999
3 2.1.17 -9998
4 2.1.17 -9997
10 1.1.17 -9996
我怎样才能做到这一点?
尝试:
select id,date,number
from a_table
order by date desc, number < 0, abs(number) desc
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句