如何在Teradata SQL中为不存在的关系“创建” NULL数据

时间:2019-06-21 12:01:33

标签: sql null teradata

我有2个表,一个表列出了具有某个帐户可能具有或不具有的特征值的功能(TBL_Feat),另一表列出了该帐户(TBL_Acct)。

我正在寻找一个查询,以便为我提供每个帐户的所有功能,如果该帐户不存在该功能,请在该行中添加一个功能,但其值为NULL。我的功能列表是固定的,因此不必担心。

Tbl_Feat
FEATURE_ID  FEATURE_VALUE  ACCOUNT_NBR
1           3              100
1           4              101
1           6              102
2           4              102


Tbl_Acct
Account_nbr
100
101
102
103

我期望看到的是这样的结果:

Account_nbr  FEATURE_ID  FEATURE_VALUE
100          1           3
100          2           null
101          1           4
101          2           null
102          1           6
102          2           4
103          1           null
103          2           null

一个附加问题,如果Tbl_Feat表中不存在某个功能,您的答案会有什么变化吗?例如。在我的示例中,FEATURE_ID = 3。

1 个答案:

答案 0 :(得分:0)

使用cross join生成行,使用left join引入值:

select a.account_nr, f.feature_id, tf.feature_value
from tbl_acct a cross join
     (select distinct feature_id from tbl_feat) f left join
     tbl_feat tf
     on tf.account_nbr = a.account_nbr and
        tf.feature_id = f.feature_id
order by a.account_nr, f.feature_id;