Как «создать» NULL-данные в Teradata SQL для несуществующих отношений - PullRequest
0 голосов
/ 21 июня 2019

У меня есть 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 голосов
/ 21 июня 2019

Используйте 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...