如何在其他表中检查联接值是否为空和查找

时间:2018-12-28 14:03:54

标签: sql apache-spark-sql

如果accomm_bktype_bk的连接值为Null,那么如何在表中查找值lookup_accomm_bklookup_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的{​​{1}}并获取值。

示例

type_bk

1 个答案:

答案 0 :(得分:1)

  

如果Result为NULL,则如何查找staging。使用表lookup_accomm_bk替换accomm_bk列并使用lookup_type_bk替换type_bk列并获取值。

您需要在查询中再添加两个LEFT JOIN,才能将contract表链接到表lookup_accomm_bklookup_type_bk

如果在COALESCEaccomm_dim中找不到查找的值,则使用type_dim函数显示查找的值。

这里是查询的框架(您需要为其他ON定义适当的LEFT JOIN子句):

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 ...