You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中如何按ItemName分组合并重复行?使用GROUP BY遇错误

解决方案:Snowflake中合并重复行

问题原因

你之前使用GROUP BY报错,是因为SQL的核心规则:SELECT子句中未使用聚合函数的列,必须全部出现在GROUP BY子句中。如果只GROUP BY ItemName,其他列既不在GROUP BY里也未被聚合,Snowflake会直接抛出语法错误。

两种可行方案

方案1:用DISTINCT快速去重

如果你的需求是当所有列的数值完全匹配时保留唯一一行,直接用DISTINCT是最简单的方式,它会自动过滤掉所有完全重复的记录:

SELECT DISTINCT
   StudioID,
   StudioName,
   ItemName,
   ServiceCategory,
   RevenueCategory,
   SecondRevenueCategory
FROM
   BV_SalesOverview
WHERE
   -- 注意:如果SecondRevenueCategory存储的是SQL NULL值(不是字符串'Null'),请改为 SecondRevenueCategory IS NOT NULL
   SecondRevenueCategory <> 'Null'
ORDER BY
   ItemName

方案2:用GROUP BY指定所有分组列

如果你更倾向于用GROUP BY,需要把SELECT里的所有非聚合列都放到GROUP BY中,这样只有当这些列的数值完全相同时,才会被合并为一行:

SELECT
   StudioID,
   StudioName,
   ItemName,
   ServiceCategory,
   RevenueCategory,
   SecondRevenueCategory
FROM
   BV_SalesOverview
WHERE
   -- 同样注意NULL值的判断逻辑
   SecondRevenueCategory <> 'Null'
GROUP BY
   StudioID,
   StudioName,
   ItemName,
   ServiceCategory,
   RevenueCategory,
   SecondRevenueCategory
ORDER BY
   ItemName

额外注意事项

你的WHERE子句中SecondRevenueCategory <> 'Null'是判断列值等于字符串'Null',如果该列实际存储的是SQL标准的NULL值(空值),请替换为SecondRevenueCategory IS NOT NULL,否则无法正确过滤空值。

内容的提问来源于stack exchange,提问作者pryor1bc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:45:22