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

使用聚合函数仍报错:invoice_date未在聚合函数或GROUP BY子句中

解决SQL分组报错问题

错误原因分析

你写的SQL有两个核心问题:

  1. 用错聚合函数:要获取「最后一张发票日期」应该用MAX(invoice_date),而非SUM(invoice_date)——SUM是对日期做求和运算,完全不符合需求。
  2. GROUP BY与窗口函数冲突:你同时使用了GROUP BY item_id, location_name和窗口函数OVER(PARTITION BY location_name),但invoice_date既没包含在GROUP BY子句中,也没有被聚合处理,数据库无法确定如何在分组后处理这个字段,因此抛出错误。

正确写法(两种场景)

场景1:每个商品(item_id)显示其所在位置(location_name)的最后发票日期

不需要GROUP BY,直接用窗口函数按位置分区计算最大日期:

SELECT 
    item_id,
    location_name,
    MAX(invoice_date) OVER(PARTITION BY location_name) AS LastInvoiceDate
FROM items_report AS InactiveItems
ORDER BY item_id

场景2:每个「商品+位置」组合的最后发票日期

用GROUP BY分组后,直接对每组的发票日期取最大值:

SELECT 
    item_id,
    location_name,
    MAX(invoice_date) AS LastInvoiceDate
FROM items_report AS InactiveItems
GROUP BY item_id, location_name
ORDER BY item_id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:52:38