SQL Server,在两列上排序,首先是asc sort,第二个是asc或desc,基于第一个奇数偶数

时间:2015-08-21 05:09:22

标签: sql sql-server

我想基于两列排序表,首先是asc sort,如果第一个字段是奇数,那么第二个是asc sort,如果第一个字段是desc那么排序。

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

enter image description here

我希望将它归类为

enter image description here

如何编写这个sql?

2 个答案:

答案 0 :(得分:6)

ORDER BY -1 * SecondField为偶数时,您可以FirstField

SQL Fiddle

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

答案 1 :(得分:0)

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

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