如何合并两个表获取各分类对应的心愿单日期和最后下单日期
解法
你只需要左连接两张表后,通过CASE WHEN按Category字段匹配对应分类的下单日期即可,标准SQL写法如下:
SELECT w.EmailAddress, w.wish_created_date, w.Category, CASE w.Category WHEN 'Curtain' THEN lco.last_curtain_order WHEN 'Table' THEN lco.last_table_order WHEN 'Sofa' THEN lco.last_sofa_order WHEN 'Chair' THEN lco.last_chair_order END AS last_cat_order FROM wish w LEFT JOIN last_category_orders lco ON w.EmailAddress = lco.EmailAddress
这个写法完全匹配你给出的预期结果:
- a用户Curtain分类心愿单匹配
last_curtain_order的Aug-5-2021 - e用户Sofa分类心愿单对应
last_sofa_order为空,所以返回null
如果使用支持Map函数的SQL引擎(如Spark SQL、Hive SQL),可以简化写法:
SELECT w.*, map( 'Curtain', last_curtain_order, 'Table', last_table_order, 'Sofa', last_sofa_order, 'Chair', last_chair_order )[Category] AS last_cat_order FROM wish w LEFT JOIN last_category_orders lco USING(EmailAddress)
内容的提问来源于stack exchange,提问作者Sonia S
相关产品推荐
相关产品推荐

