Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

14 дней назад
Байкер
24 года, Латвия
4 года в сервисе
Был онлайн 13 дней назад
3 отзыва
24% заказов с выбором исполнителя
14 дней назад

Имеется селект, который вытаскивает запись базируюсь на масимальном значения 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.
  • Во всех других случаях он должен возвращать пустоту.

  • Рекламное место свободно
  • Рекламное место свободно
Заявки фрилансеров
2 заявки от фрилансеров

Посмотреть заявки можно будет после закрытия заказа.

Другие заказы в категории «Базы данных»