{ "title": "ODPS SQL 错误:UNION 操作类型不匹配、列解析错误及 GROUP BY 问题解决", "description": "本文详细解析了在执行 ODPS SQL 语句时,遇到的 UNION 操作类型不匹配、列解析错误及 GROUP BY 问题,并提供了详细的解决方案。", "keywords": "ODPS, SQL, UNION, 类型不匹配, 列解析错误, GROUP BY, 错误解决", "content": "根据报错信息,可以发现以下问题:\n\n1. UNION操作的左侧子查询和右侧子查询的列数不一致。左侧子查询有2列,右侧子查询有3列。需要将两个子查询的列数保持一致。\n\n2. 在ON条件中引用了t表的user_id和prov_id列,但是t表中并没有这两列。可能是在子查询中使用了错误的列名。\n\n3. 在GROUP BY子句中,引用了u表的user_id、prov_id和total_fee列,但是没有引用u表的natural_cust_id列。需要将natural_cust_id列添加到GROUP BY子句中。\n\n针对以上问题,可以尝试进行以下修改:\n\n\nselect \n u.user_id,\n u.natural_cust_id,\n u.prov_id\nfrom zq_dwa.dwa_m_cus_al_cb_user_info u\ninner join \n(select \n a.natural_cust_id,\n a.prov_id,\n b.cust_level\nfrom zq_dwa.dwa_m_cus_al_cb_user_info a \nleft join zq_dwa.dwa_m_cus_al_list_nat_info b on a.natural_cust_id = b.nature_id\nwhere b.cust_level = '0'\n\nunion all \n\nselect \n a.natural_cust_id,\n a.prov_id,\n b.cust_level\nfrom zq_dwa.dwa_m_cus_al_cb_user_info a \nleft join zq_dwa.dwa_m_cus_al_list_nat_info b on a.prov_id = b.prov_id and a.natural_cust_id = b.nature_id\nwhere b.cust_level = '1') t \non u.user_id = t.user_id and u.natural_cust_id = t.natural_cust_id and u.prov_id = t.prov_id\ngroup by u.user_id, u.natural_cust_id, u.prov_id\norder by u.total_fee limit 50;\n\n请注意,如果报错信息中提到的列名是正确的,可以将其替换回来。如果仍然有其他报错,请提供具体的报错信息以便进一步分析和解决。

ODPS SQL 错误:UNION 操作类型不匹配、列解析错误及 GROUP BY 问题解决

原文地址: https://www.cveoy.top/t/topic/pTbc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录