Как сделать запрос в PostgreSQL используя join left и if null напоминающую excel формулу типа =ЕСЛИОШИБКА(ВПР();ЕСЛИ())

Суть заключается в том, что мне надо подставить к левой таблице все значения из правой, и если данные из левой таблице отсутствуют в правой таблице, то подставлять 2 варианта текста, во все столбцы правой таблицы

  1. Подставлять при Join left в t3."Место_работы_отдел" = 'не расписано на отдел'- если в поле в t1."отдел_исполнитель" нет данных
  2. Подставлять при 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 шт):

Автор решения: MrFylypenko

Если правильно понял вопрос, то при 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."Отдел_Исполнитель";
→ Ссылка