我希望您能帮助我完成一个查询,我希望结果集以不寻常的方式排序。如果您能提供任何帮助或指导,我将不胜感激。
我有一个 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。
SELECT CODE, TIMESTAMP
FROM your_table_name
ORDER BY
CASE
WHEN CODE IN ('B', 'C') THEN 0
ELSE 1
END,
TIMESTAMP;