我需要执行这条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,不带rank和partition呢?然后用java处理?
最佳答案
如果 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
关于java - 具有等级和分区的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861457/