SQL с рангом и разделом - PullRequest
       1

SQL с рангом и разделом

3 голосов
/ 14 января 2012

Мне нужно выполнить этот 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 на разные sqls без ранга и раздела? А потом справиться с этим с Java?

1 Ответ

5 голосов
/ 14 января 2012

Если 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...