Динамический фильтр

Есть таблица

CLIENT RN DP
1 1 3
1 2 7
2 1 2
3 1 8
4 1 9
4 2 6
4 3 5

Нужно отфильтровать по колонке rn записи с значением 2 если же их нет тогда 1

Желаемый результат

CLIENT RN DP
1 2 7
2 1 2
3 1 8
4 2 6

Фильтр таблиц я делаю внутренним запросом where rn in (...)
Но как реализовать динамический подход ?


Ответы (1 шт):

Автор решения: Akina

записи с значением 2 если же их нет тогда 1

SELECT DISTINCT
       client,
       MAX(rn) OVER (PARTITION BY client) AS rn,
       FIRST_VALUE(dp) OVER (PARTITION BY client ORDER BY rn DESC) dp
FROM table
WHERE rn IN (1,2)
→ Ссылка