【发布时间】:2015-06-17 01:48:46
【问题描述】:
我有以下选择语句
SELECT c.car_id
MAX(m.mod_number) KEEP (DENSE_RANK LAST ORDER BY
DECODE(m.mod_number 'SP1', 10, 'SP2', 20, 'SP3', 30, 40))
FROM CAR c, MANUFACTURE m
WHERE c.car_type = m.car_type
AND m.make LIKE 'FOR%'
GROUP BY c.car_id;
我想将其更改为 H2 语法以进行单元测试,但我只能进行解码。我不知道如何使用 keep (dense_rank...) 进行修改,如何在保留 Oracle 的 select 语句功能的同时做到这一点?
【问题讨论】:
-
保留 Oracle 的功能到底是什么意思?
KEEP通常被替换为自连接(即您从同一个表中选择两次)。尽管@Nicks 技巧非常好,但它可能没有与 orinal 查询相同的性能(PS:DECODE应该重写为CASE WHEN)。