如何在 Teradata SQL 中为不存在的关系"创建"空数据



我有 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 在我的例子中。

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

相关内容

  • 没有找到相关文章

最新更新