gpt4 book ai didi

sql - 如何在 PostgreSQL 中使用循环序列执行排序

转载 作者:行者123 更新时间:2023-11-29 14:10:06 25 4
gpt4 key购买 nike

我有一个包含 3 列(id、日期、数字)的表number 是一个从 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

关于sql - 如何在 PostgreSQL 中使用循环序列执行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41982648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com