ORDER BY 子句

问题描述 投票:0回答:1

我希望您能帮助我完成一个查询,我希望结果集以不寻常的方式排序。如果您能提供任何帮助或指导,我将不胜感激。

我有一个 DB2 表,其中包含一个我将称为 CODE 的列,其值为 A、B、C、D、E、F(例如)。另一列 TIMESTAMP,表示行插入表的时间。

我想按如下方式对结果集进行排序:

如果 CODE = B 或 C,则首先显示这些行(无论 CODE 的值如何,都按时间戳顺序显示,即我不希望 B 在 C 之前)。然后显示剩余的行(也按时间戳顺序)。

例如:

**C**  2024-**08-01**-12.59.21.177652
**B**  2024-**08-02**-12.59.21.177652
**C**  2024-**08-03**-12.59.21.177652
**D**  2024-**07-20**-12.59.21.177652
**A**  2024-**07-21**-12.59.21.177652
**F**  2024-**07-22**-12.59.21.177652
**E**  2024-**08-20**-12.59.21.177652

我想我可以在 ORDER BY 中添加 CASE 语句,但这似乎不起作用。我在 z/OS 大型机上使用 DB2。

db2 db2-zos
1个回答
0
投票
SELECT CODE, TIMESTAMP
FROM your_table_name

ORDER BY 
CASE 
    WHEN CODE IN ('B', 'C') THEN 0
    ELSE 1
END,
TIMESTAMP;
© www.soinside.com 2019 - 2024. All rights reserved.