Sql 为什么此配置单元代码返回0个结果?

Sql 为什么此配置单元代码返回0个结果?,sql,hive,bigdata,hiveql,Sql,Hive,Bigdata,Hiveql,当我查询到“WHERE C.sfdc\u account\u name为NULL”时,它返回必要的结果。但是,如果我添加最后一行。。。“和C.Billing_Client in('CL.00000:')”,它只返回0个结果。请帮忙 我推测你打算: select * FROM prd_raw_sf.sf_opportunity_dn A JOIN prd_raw_sf.sf_opportunity_rw B ON A.OPPORTUNITYID = B.SFDC_ID L

当我查询到“WHERE C.sfdc\u account\u name为NULL”时,它返回必要的结果。但是,如果我添加最后一行。。。“和C.Billing_Client in('CL.00000:')”,它只返回0个结果。请帮忙

我推测你打算:

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:')
LEFT JOIN
之后,帐户名不可能是
NULL
Billing\u客户端不可能是
NULL
。这是因为帐户名用作
JOIN
键,因此
NULL
不匹配。
NULL
值表示不匹配,因此表中的所有其他列都是
NULL


请注意,我还修复了表别名,因此它们是有意义的,而不是任意字母。

为什么?因为无论是
JOIN
还是
WHERE
子句都会过滤掉所有结果。谢谢@Gordon Linoff。。。这很有帮助
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;