oracle多个自定义订单

lo8azlld  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(361)

是否可以执行sn ORDER BY 在oracle sql中,在使用 CASE ?
例如:

+------------------+
| Code | DateTime  |
+------------------+
| ABC  | 7-01-2020 |
+------------------+
| DSF  | 7-01-2020 |
+------------------+
| ABC  | 6-01-2020 |
+------------------+

我想订这个 CodeABC 然后按顺序订购 DateTime 排在第一位。为什么我不能这么做?

SELECT * FROM TABLE
ORDER BY
    CASE
        WHEN CODE = 'ABC' THEN '001'
        ELSE 'ZZZ'
    END
AND DATETIME ASC;

我只能使用 CASE 声明中没有其他内容 ORDER BY 条款。如果我移除 AND DATETIME ASC; 查询将只按 CODE 代码在哪里 ABC 是第一个。

jaxagkaj

jaxagkaj1#

如果用逗号分隔,可以按多个术语排序( , ),不是 AND :

SELECT * FROM TABLE
ORDER BY
    CASE
        WHEN CODE = 'ABC' THEN '001'
        ELSE 'ZZZ'
    END, -- Note the comma here
    DATETIME ASC;
np8igboo

np8igboo2#

通常,您不会将字符串用于 case 表达式:

ORDER BY (CASE WHEN CODE = 'ABC' THEN 1 ELSE 2 END),
         DATETIME ASC;

弦乐当然管用。他们看起来很尴尬。

相关问题