sql rank diplay запрашиваемый номер ранга - PullRequest
0 голосов
/ 25 сентября 2018

Запрос:

SELECT distinct 
rank() OVER (ORDER BY p.service) as rank,
p.service, 
From table_service
Where 1=1

Вывод:
Ранг: 1 |Сервис: test1
Ранг: 2 |Сервис: test2
Ранг: 3 |Служба: test3

как я могу отобразить только ранг 2?

Я пробовал это, но не работает:

SELECT distinct 
rank() OVER (ORDER BY p.service) as rank,
p.service, 
From table_service
Where rank = 2

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Поместите ваш запрос в подзапрос:

select *
from
(
SELECT distinct 
rank() OVER (ORDER BY p.service) as rank,
p.service, 
From table_service
) sub
Where rank = 2;
0 голосов
/ 25 сентября 2018

Зачем использовать ранг?Большинство баз данных поддерживают offset/fetch или что-то подобное:

select p.service,
from table_service p
order by p.service
offset 1 fetch first 1 row only;
0 голосов
/ 25 сентября 2018

Вы можете попытаться использовать подзапрос, потому что where не может использовать псевдоним для выполнения условия.

SELECT * FROM (
    SELECT 
        rank() OVER (ORDER BY p.service) as rank,
        p.service, 
    From table_service
) t1
where rank = 2
...