Oracle. Обновить селект базируясь на условихя
Имеется селект, который вытаскивает запись базируюсь на масимальном значения 1-го полня
SELECT *
FROM
(
SELECT discount, osp_id, sero_id, estpt_id,
ROW_NUMBER() OVER
(PARTITION BY osp_id, sero_id, estpt_id ORDER BY festpae_id DESC) as festpae_id
FROM database1 data1
JOIN database2 data2 ON data2.id = data1.attr_id
WHERE data1.interest_rate = 1
AND data1.ordet_id = data2.id
AND data1.objt_attr_id = data2.objt_attr_id
)
WHERE festpae_id = 1
Список запией:
DISCOUNT OSP_ID SERO_ID ESTPT_ID FESTPAE_ID VALUE
---------- ---------- ---------- ---------- ---------- ----------
50 619356 3931831 2144 NULL 0
40 619356 3931831 2144 NULL 1
30 619356 3931831 2144 2000743 0
15 619356 3931831 2144 2000744 1
Выполняя селект, я получу вот это
DISCOUNT OSP_ID SERO_ID ESTPT_ID FESTPAE_ID VALUE
---------- ---------- ---------- ---------- ---------- ----------
50 619356 3931831 2144 NULL 0
Мои знания не велики, по этому обращаюсь к Вам.
Мне нужно принять во внимания ещё некоторые поля и условия
- Если существуют записи где festpae_id is NULL, тогда нужна проверка на festpae_id is NULL and value = 1, соответсвенно он должен вернуть запись где discount 40( в данном случае)
- Если не существует записей где festpae_id is null, тогда он должен смотреть на макисмальное (festpae_id) (в данном случае использую ROW_NUMBER() ) и value = 1.
- Во всех других случаях он должен возвращать пустоту.