Snowflake SQL执行全外连接无法获取全部行问题求助
问题分析与解决方案
你的SQL语句存在两个关键问题,导致无法得到预期结果:
- 字段名拼写错误:表1的销售额字段是
Sales_1,表2是Sales_2,但你在查询中写成了table_1.sales和table2.sales,这会导致无法正确读取数据。 - 输出列设计不符合需求:你需要分别保留
Sales_1和Sales_2列,而不是用coalesce合并成单个列,否则无法区分两张表的原始数据。
另外你预期的结果行存在错误:表2中Spices记录的Category和Date都有有效值,全外连接后这两个字段应该显示Spices和2020-10-10,而非NULL。
正确的Snowflake SQL语句
SELECT COALESCE(table_1.Category, table_2.Category) AS Category, COALESCE(table_1.Date, table_2.Date) AS Date, table_1.Sales_1, table_2.Sales_2 FROM table_1 FULL OUTER JOIN table_2 ON table_1.Category = table_2.Category;
执行结果说明
运行上述语句后,会包含你需要的Spices相关行:
Category Date Sales_1 Sales_2 Spices 2020-10-10 NULL 90748.89
这行数据准确反映了:Spices仅存在于表2中,因此表1的Sales_1为NULL,表2的Sales_2显示对应数值,同时保留了表2中该记录的Category和Date值。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

