为什么此 Hive 代码返回 0 个结果?
Why is this Hive code returning 0 results?
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" 时,它 returns 是必要的结果。但是,如果我添加最后一行... "and C.Billing_Client in ('CL.00000:')",它只是 returns 0 结果。请帮忙!
我推测您打算:
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;
账户名不可能在 LEFT JOIN
之后是 NULL
并且 Billing_Client
不可能是任何 other 而不是 NULL
。那是因为账户名被用作JOIN
键,所以NULL
不匹配。 NULL
值表示不匹配,因此 table 中的所有其他列都是 NULL
.
请注意,我还修复了 table 别名,因此它们是有意义的而不是任意字母。
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" 时,它 returns 是必要的结果。但是,如果我添加最后一行... "and C.Billing_Client in ('CL.00000:')",它只是 returns 0 结果。请帮忙!
我推测您打算:
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;
账户名不可能在 LEFT JOIN
之后是 NULL
并且 Billing_Client
不可能是任何 other 而不是 NULL
。那是因为账户名被用作JOIN
键,所以NULL
不匹配。 NULL
值表示不匹配,因此 table 中的所有其他列都是 NULL
.
请注意,我还修复了 table 别名,因此它们是有意义的而不是任意字母。