我需要执行这个sql:
select * from
(select nt.*,
rank() over (partition by feld0 order by feld1 desc) as ranking
from (select bla from test) nt)
where ranking < 3
order by 1,2
这个sql在我的oracle数据库中工作正常,但在我使用的h2数据库中,这有点不起作用,因为没有定义rank和partition。
所以我需要转换这个sql,以便在h2和oracle中工作。
我想用java来执行这个sql。那么有可能将这个sql拆分成不同的sqls而没有rank和partition吗?然后用java处理它?</ p>
答案 0 :(得分:5)
如果feld1
在feld0
分区中是唯一的,您可以:
select *
, (
select count(*)
from YourTable yt2
where yt2.feld0 = yt1.feld0 -- Same partition
and yt2.feld1 <= yt1.feld1 -- Lower or equal rank
) as ranking
from YourTable yt1