如何 'create' Teradata SQL 中的 NULL 数据用于不存在的关系

How to 'create' NULL data in Teradata SQL for non existing relations

我有 2 个 table,一个列出具有帐户可能具有或不具有的特征值的特征 (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 table 中有一项不普遍的功能,您的回答会有什么变化吗?例如。 FEATURE_ID = 3 在我这里的例子中。

使用 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;