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

Firebird数据库GROUP BY报错:字段未在聚合函数或GROUP BY子句中

问题解决:Firebird GROUP BY 错误修复

错误原因

Firebird遵循严格的SQL标准:SELECT子句中出现的非聚合字段必须全部包含在GROUP BY子句里。你的SQL里,BELEGART_AU、NETTO_AU等字段是基于BELEGART和NETTO的计算结果,既没加入GROUP BY,也没被聚合函数正确包裹,因此触发错误。

正确SQL写法

按照你按ONLINE分组、拆分BELEGART为AU/MS字段的需求,需要把每个CASE表达式用聚合函数包裹(用MAX提取BELEGART标识,用SUM汇总NETTO金额):

SELECT 
    B.ONLINE 
    ,MAX(CASE WHEN B.BELEGART = 'AU' THEN B.BELEGART END) AS BELEGART_AU        
    ,SUM(CASE WHEN B.BELEGART = 'AU' THEN B.NETTO END) AS NETTO_AU
    ,MAX(CASE WHEN B.BELEGART = 'MS' THEN B.BELEGART END) AS BELEGART_MS        
    ,SUM(CASE WHEN B.BELEGART = 'MS' THEN B.NETTO END) AS NETTO_MS
FROM BELEG B
WHERE
    B.BELEGART IN ('AU','MS')
GROUP BY B.ONLINE

说明

  • MAX(CASE ...):每个ONLINE分组中,只要存在BELEGART='AU'的记录,就会返回'AU',否则返回NULL,满足拆分展示的需求。
  • SUM(CASE ...):自动忽略NULL值,仅对符合条件的NETTO进行求和,实现按类型汇总金额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:40:02