В приведенном ниже примере данных мне нужен запрос, который возвращает каждую строку, где, если поле «contingent_on» равно NULL, оно возвращается как NULL, но если оно не равно NULL, оно возвращается с «ticket_name», соответствующим «primary_key». ' ценность.
Я пробовал запросы на самосоединение, но смог заставить их возвращать не NULL-строки.
пример данных таблицы:
primary_key | ticket_name | contingent_on
1 | site preparation | NULL
2 | tender process | NULL
3 | construction | 1
Должны быть возвращены все строки, где в строке «строительство» вместо «1» в поле «contingent_on» вводится «подготовка площадки».






Вам нужно самостоятельное левое соединение:
select
t.primary_key,
t.ticket_name,
tt.ticket_name ticket_name2
from tablename t left join tablename tt
on tt.primary_key = t.contingent_on
order by t.primary_key
Смотрите демо.
Полученные результаты:
| primary_key | ticket_name | ticket_name2 |
| ----------- | ---------------- | ---------------- |
| 1 | site preparation | null |
| 2 | tender process | null |
| 3 | construction | site preparation |
Спасибо, Форпас, отлично!
Выглядит простым запросом:
select
primary_key,
ticket_name,
case when contingent_on is not null then ticket_name else contingent_on end as contingent_on
from <<your_table>>
order by primary_key
Это выглядит просто - можете ли вы добавить свой запрос, пожалуйста.