我需要执行以下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数据库中却不起作用,因为未定义等级和分区。
因此,我需要转换此sql,以便它可以在h2和oracle中工作。
我想使用Java执行此sql。那么有可能将此sql拆分为不同的sql,而不进行排名和分区吗?然后用Java处理呢?
如果feld1在feld0分区中是唯一的,则可以:
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