【问题标题】:SQL Server, sort on two columns,first asc sort,second asc or desc based on the first odd-evenSQL Server,对两列进行排序,第一个 asc 排序,第二个 asc 或 desc 根据第一个奇偶
【发布时间】:2025-12-09 21:25:01
【问题描述】:

我想根据两列对表格进行排序,首先是 asc 排序,第二个如果第一个字段是奇数则按 asc 排序,如果第一个字段是偶数则按 desc 排序。

例如我在一个表中有一些数据

我想把它排序成这样

这个sql怎么写?

【问题讨论】:

  • sql-server,但是如果两个数据库都可以写那就再好不过了

标签: sql sql-server


【解决方案1】:

FirstField 是偶数时,您可以简单地ORDER BY -1 * SecondField

SQL Fiddle

SELECT *
FROM tbl
ORDER BY
    FirstField,
    CASE 
        WHEN FirstField % 2 = 0 THEN -1 * SecondField
        ELSE SecondField
    END

【讨论】:

    【解决方案2】:

    您可以使用三个排序,并保持未使用的一个不变:

    select *
    from myTable
    order by FirstField,
        case when FirstField % 2 = 0 then SecondField else 0 end desc,
        case when FirstField % 2 = 1 then SecondField else 0 end asc
    

    SQL Fiddle demo

    【讨论】:

      最近更新 更多