powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор первого не нулевого варианта
4 сообщений из 4, страница 1 из 1
Выбор первого не нулевого варианта
    #39322232
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо сделать запрос с условием, что если первый подзапрос ничего не возвращает, то второй подзапрос и т.д. 6 условий
Но первый подзапрос имеет важность выше, то есть если не нулевые оба, нужно выбрать первый.

Код: sql
1.
2.
3.
4.
5.
6.
7.
select dd.dept,dp.name, case 
when (select max(per) from x where x.dept=dd.id and  x.id=dp.id) is not null then (select max(per) from x where x.dept=dd.id and x.id=dp.id)
when (select max(per) from x where x.dept=dd.id and  x.id=dp.col1) is not null then (select max(per) from x where x.dept=dd.id and x.id=dp.col1)
when (select max(per) from x where x.dept=dd.id and  x.id=dp.col2) is not null then (select max(per) from x where x.dept=dd.id and x.id=dp.col2)
...
end per
from dp,dd



вот этот подзапрос два раза в case мне очень не нравится, есть еще вариант сделать через join (select unuon select union select) с ранжированием по степени важности, но надо обдумать как.

Запрос полный не писала еще, только прицениваюсь, отягощается тем, что нужно выбрать по всем отделам все продукты.
А вообще может выбрать не все продукты, а только те, где не null по итогу по условиям...
...
Рейтинг: 0 / 0
Выбор первого не нулевого варианта
    #39322235
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM COALESCE
...
Рейтинг: 0 / 0
Выбор первого не нулевого варианта
    #39322244
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

О, спасибо подходит.
...
Рейтинг: 0 / 0
Выбор первого не нулевого варианта
    #39322307
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845с ранжированием по степени важностиselect max(per) keep(dense_rank first order by степень_важности/*case*/) from x where x.dept=dd.id and per is not null
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор первого не нулевого варианта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]