Почему этот код Hive возвращает 0 результатов? - PullRequest
0 голосов
/ 07 ноября 2019
select * 
FROM prd_raw_sf.sf_opportunity_dn A JOIN 
     prd_raw_sf.sf_opportunity_rw B
     ON A.OPPORTUNITYID  = B.SFDC_ID LEFT JOIN
     prd_raw_sf.sf_si_accounts_mapping C
     ON TRIM(UPPER(A.ACCOUNT_NAME)) = TRIM(UPPER(C.sfdc_account_name))
WHERE C.sfdc_account_name IS NULL
and C.Billing_Client in ('CL.00000:')

Возвращает необходимые результаты, когда я запрашиваю до "WHERE C.sfdc_account_name IS NULL". Однако, если я добавлю последнюю строку ... "и C.Billing_Client в ('CL.00000:')", он просто вернет 0 результатов. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 07 ноября 2019

Я предполагаю, что вы намереваетесь:

SELECT * 
FROM prd_raw_sf.sf_opportunity_dn od JOIN 
     prd_raw_sf.sf_opportunity_rw orw
     ON od.OPPORTUNITYID = orw.SFDC_ID LEFT JOIN
     prd_raw_sf.sf_si_accounts_mapping am
     ON TRIM(UPPER(od.ACCOUNT_NAME)) = TRIM(UPPER(ord.sfdc_account_name)) AND
        am.Billing_Client in ('CL.00000:')
WHERE am.sfdc_account_name IS NULL;

Невозможно, чтобы имя учетной записи было NULL после LEFT JOIN, а Billing_Client было чем-то прочим чем NULL. Это связано с тем, что имя учетной записи используется в качестве ключа JOIN, поэтому NULL не совпадает. Значение NULL указывает на отсутствие совпадения, поэтому все остальные столбцы таблицы: NULL.

Обратите внимание, что я также исправил псевдонимы таблицы, чтобы они содержали смысл, а не произвольные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...