Динамический фильтр
Есть таблица
| 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)