Как проверить значение соединения для нуля и поиска в других таблицах - PullRequest
0 голосов
/ 28 декабря 2018

Если значения объединения accomm_bk и type_bk равны нулю, то как искать значения в таблицах, скажем lookup_accomm_bk, lookup_type_bk.

Любая помощь будет оценена.

select accomm_bk,type_bk
from 
staging.contract a 
left join dim.accomm_dim b on (a.accomm_id)= b.accomm_hash
left join dim.type_dim c on (a.accomm_id)= c.type_hash

Если результат равен NULL, тогда как искать staging.contract a с таблицами lookup_accomm_bk для столбца accomm_bk и lookup_type_bk для столбца type_bk и получить значения.

Пример

accomm_bk | type_bk
--------------------
NULL      | NULL

1 Ответ

0 голосов
/ 28 декабря 2018

Если Result равен NULL, то как искать staging.contract a с таблицами lookup_accomm_bk для столбца admm_bk и lookup_type_bk для столбца type_bk и получать значения.

Вам потребуется добавить еще дваLEFT JOIN s к вашему запросу, чтобы связать таблицу contract с таблицами lookup_accomm_bk и lookup_type_bk.

Затем используйте функцию COALESCE, чтобы отобразить искомые значения, если они не могут быть найденыв accomm_dim и type_dim.

Вот скелет для запроса (вам необходимо определить правильные ON предложения для дополнительных LEFT JOIN s):

select 
    COALESCE(b.accomm_bk, lb.accomm_bk),
    COALESCE(c.type_bk, lc.type_bk)
from 
    staging.contract a 
    left join dim.accomm_dim b on (a.accomm_id)= b.accomm_hash
    left join dim.type_dim c on (a.accomm_id)= c.type_hash
    left join dim.lookup_accomm_bk lb on ...
    left join dim.lookup_type_bk lc on ... 
...