相同之处都是增加sql的限制条件。
不同的地方是join on当中on的意思就是对join增加限制条件,首先执行on关键字的过滤,>然后获得一个join之后的总的一个数据表,然后通过where对这个表来进行过滤筛选。
on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记
录。
ps:all expressions in a derived table must hava an explicit name
关于这个问题的原因就是使用聚合函数取别名的时候,join前后的名字可能相同,因此需要
将他们的名字修改掉。1
select case when conversion.offer_Id='1000dm0bj6gq' then 'PS4' else 'PS3' end as Collateral,sum(conversion.email_campaign_cnvrsn_cnt),sum(Targeted_User_Cnt) from EADW_ADM_APP.CAMPAIGN_CONVERSION conversion left join (select offer_Id,Targeted_User_Cnt from EADW_ADM_APP.CAMPAIGN_PROCESS where Campaign_Id='1000dm0bj63b' and lead_type_id='999') n on conversion.offer_Id=n.offer_Id where conversion.Campaign_Id='1000dm0bj63b' and conversion.lead_type_id='999' group by conversion.offer_Id;