java - 具有等级和分区的 SQL

标签 java sql oracle

我需要执行这条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处理?

最佳答案

如果 feld1feld0 分区中是唯一的,您可以:

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/

相关文章:

sql - 获取 SQL 周数

sql - Oracle SQL 查询在 12C 中工作但在 11g 中无效

oracle - MS-Access ODBC 连接到 Oracle for SQL

java - 是否有任何理由在 Maven 中为我自己的传递依赖项保留显式依赖声明?

java - 在 SWT 中单击另一个按钮时处置 SelectionListener

sql - 尝试理解外键语法

基于MySQL查询输出的PHP决策

java - 调整 JFrame 大小时会调用哪些方法?

java - 获取屏幕高度返回比物理屏幕可以显示的更大的屏幕

python - Oracle 和 Python - cx_Oracle DLL 加载失败