我想在两个表之间有2个连接条件,第一个连接条件应该总是可以工作,但是第二个连接条件只有在满足条件的情况下才可以工作,否则要根据前两个连接给出结果。
我有两种方法,一种是直接给两个条件,然后加上case语句 第三次加入
第二次,我尝试在打开后具有case语句。对于第一种情况,我有1个加入条件,对于第二种情况,我放了2个加入条件。
SELECT *,IND.bill_to_id FROM txn_sales_shippedorders_intl shippedorders
LEFT JOIN ( SELECT cust_sid, max(cust_key) cust_key
,cust_nbr
FROM com_hub.ref_customer_hco_intl
GROUP BY cust_sid, cust_nbr
) cust ON cust.cust_sid = regexp_replace(shippedorders.cust_align_sid, "\\.0*", '')
--AND cust.country_cd = shippedorders.country_cd
AND cust.src_sys_id=shippedorders.src_sys_id
LEFT JOIN
(SELECT CUSTOMER,ship_to_id, bill_to_id
FROM com_lake.ref_india_customer_crossmap
) ind ON case when substr(SDVR02,1,2) ='IM'
and ind.ship_to_id = cust.cust_nbr then 1
WHEN substr(SDVR02,1,2) ='ER' and ind.CUSTOMER = cust.cust_name then 1
else 0
end 1
答案 0 :(得分:0)
目前,您的加入没有意义。您必须查看案例声明的结果。
目前显示为:
Left JOIN (...) ind ON 0
或
Left Join (...) ind on 1
您需要一个参数-例如
Left JOIN (...) ind on ind.index = CASE WHEN ...