我有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。
答案 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;