Как сделать запрос в PostgreSQL используя join left и if null напоминающую excel формулу типа =ЕСЛИОШИБКА(ВПР();ЕСЛИ())
Суть заключается в том, что мне надо подставить к левой таблице все значения из правой, и если данные из левой таблице отсутствуют в правой таблице, то подставлять 2 варианта текста, во все столбцы правой таблицы
- Подставлять при Join left в t3."Место_работы_отдел" = 'не расписано на отдел'- если в поле в t1."отдел_исполнитель" нет данных
- Подставлять при Join left в t3."Место_работы_отдел" = 'не расписано на сотрудника' - если в поле t1 "отдел_исполнитель" находится название отдела, а именно должен быть любой текст не относящийся к таблице t3.
- Проще сейчас конечно было бы добавить/достроить правую таблицу этими (недостающими)значениями, но понимаю, что это неправильно.
Я совсем новичок, и может надо другое использовать вместо Join и if null(или может не if null)?! Заранее спасибо
Это то что получается у меня сейчас:
select * from public."ОГ" t1
left join public."Справочник_сотрудники_ОГ" t3
on t3."ФИО" = t1."Отдел_Исполнитель"
Данные из левой таблицы t1
"ID обращения","Отдел_Исполнитель"

Данные из правой таблицы t3
"ФИО","Место_работы_отдел"

то что должно получится
"ID","Отдел_Исполнитель","Место_работы_отдел"

Ответы (1 шт):
Если правильно понял вопрос, то при left join у значений справа нужно подменять null на другие. Можно использовать if/else для postgresql case
Запрос будет выглядеть так (в зависимости от среды выполнениния sql, нужно заменить кавычки на нужные):
select t1."ID обращения",
t1."Отдел_Исполнитель",
case
when t1."Отдел_Исполнитель" is null then "не расписано на отдел"
else
case
when t1."Отдел_Исполнитель" = "Управление организации" then "не расписано на сотрудника"
else t3."Место_работы_отдел" end
end as "Место_работы_отдел"
from public."ОГ" t1
left join public."Справочник_сотрудники_ОГ" t3
on t3."ФИО" = t1."Отдел_Исполнитель";
