Sql select - как выбрать из другой таблицы, если NULL - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть представление, которое возвращает мне некоторые нулевые значения для столбцов b.emissor и B.indexador. В случае нулевого значения мне нужно сначала найти эти значения в таблице TB_CAD_RF и, если все еще равно нулю, мне нужно запросить TB_CAD_RF_2. Я пробую логику ниже, но она не работает. Также пытался что-то придумать с кейсами, но не могу понять.

Кто-нибудь может мне помочь, пожалуйста?

select A.NM_ATIVO, B.EMISSOR, B.INDEXADOR from VW_POSICAO as A
LEFT JOIN
TB_CAD_RF B on A.NM_ATIVO = B.CODIGO
where a.NM_EMISSOR is null
as C LEFT JOIN (
select C.EMISSOR, C.INDEXADOR from TB_CAD_RF_2 as D ON B.NM_ATIVO = C.CODIGO where C.EMISSOR is null)

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Вот один из способов.Всегда объединяйте оба и объединяйте поля в порядке желаемых результатов.

select A.NM_ATIVO, 
    EMISSOR = COALESCE(A.EMISSOR,B.EMISSOR), 
    INDEXADOR=COALESCE(A.INDEXADOR,B.INDEXADOR)
from VW_POSICAO  A
LEFT JOIN TB_CAD_RF B on A.NM_ATIVO = B.CODIGO
LEFT JOIN TB_CAD_RF_2 D ON A.NM_ATIVO =D.CODIGO
0 голосов
/ 14 сентября 2018

Случай, когда ISNULL ((выберите * из таблицы1), (выберите * из таблицы2)), в противном случае выберите ...

ISNULL похож на оператор IIF, но если поле запроса возвращает нулевое значение, он пытаетсяальтернативный запрос, или вы можете установить альтернативное значение.

Синтаксис может быть немного отключен, этот запрос давно не написан, но он должен поставить вас на правильный путь.Google sql ISNULL

0 голосов
/ 14 сентября 2018

Этот шаблон:

SELECT
  COALESCE( first.choice, second.choice, third.choice) as a
FROM
  first
  LEFT JOIN second on first.id = second.id
  LEFT JOIN third on second.id = third.id

Coalesce возвращает первый не нуль, переданный в него, сканируя слева направо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...