Sql 错误42803。列XXXX必须显示GROUP BY子句或在聚合函数中使用

Sql 错误42803。列XXXX必须显示GROUP BY子句或在聚合函数中使用,sql,postgresql,group-by,sum,window-functions,Sql,Postgresql,Group By,Sum,Window Functions,尝试在Sum中进行over(按Id排序,在无界的前一行和当前行之间的asc行),我尝试为每个值获取一个累计和。据我所知: SELECT c.id AS Id, c.centro AS Description, g.id as GroupId, cuen.id as BillId, r.mes_actualizado as UpdatedMonth, cri.agno_mes as YearMonth, gc.signo as Sign, cuen.descripcion-&

尝试在Sum中进行over(按Id排序,在无界的前一行和当前行之间的asc行),我尝试为每个值获取一个累计和。据我所知:

    SELECT  c.id AS Id, c.centro AS Description,  g.id as GroupId, cuen.id as BillId, r.mes_actualizado as UpdatedMonth, cri.agno_mes as YearMonth, gc.signo as Sign, 
    cuen.descripcion->>:language as Bill, false as Comparable, true as Divisor, 
    SUM(cri.importe_cal * gc.signo) over (order by c.Id asc rows between unbounded preceding and current row) AS Amount , 
    g.descripcion->> :language as Group, g.es_total as IsTotal,
    cri.importe, cri.importe_cal  
    FROM public.tabla1 m 
    INNER JOIN public.tabla2 mg ON(mg.ef_modelo_id = m.id) 
    INNER JOIN public.tabla3 g ON(g.id = mg.ef_grupo_id) 
    INNER JOIN public.tabla4 gc ON(gc.ef_grupo_id = g.id) 
    INNER JOIN public.tabla5 cuen ON(cuen.id = gc.ef_cuenta_id) 
    INNER JOIN public.tabla6 cri ON(cri.ef_cuenta_id = cuen.id) 
    INNER JOIN public.tabla7 r ON(r.id = cri.ef_real_id) 
    INNER JOIN public.tabla8 c ON(c.id = r.centro_id )  
    INNER JOIN public.tabla9 mr ON(m.id = mr.ef_modelo_id) 
    INNER JOIN public.tabla10  u ON(mr.rol_id = u.tpl_rol_id) 
    INNER JOIN public.tabla11 cu ON(cu."userId" = u."pId") AND(cu.centro_id = r.centro_id) 
    WHERE u."pId" = :userId AND g.id = :Group AND m.id = :TypeFinancialStatement AND ( cri.agno_mes BETWEEN :dateFrom AND :dateTo ) 
    GROUP BY 1,2,3,4,5,6,7,14,15

窗口函数不需要
group by
子句。因此,很可能只需要从查询中删除
groupby
子句

或者,您需要一个常规聚合函数(
sum()
,不带
over()
子句),以及
GROUPBY
子句中的
select
子句中的所有其他列,但这似乎不是您的查询想要的

另外,就您不需要在
over
子句中定义框架而言:假设
c.id
是一个唯一的列,您只需执行以下操作即可获得相同的行为:

SUM(cri.importe_cal * gc.signo) over (order by c.Id) AS Amount

您好@GMB,谢谢您的回复。如果选择选项一,告诉我c.id必须在GROUPBY子句中。我需要结束这段时间,因为我希望在这个过程中收到累计金额。选项3返回相同的原始错误。您应该问一个新问题。简化查询。提供样本数据和预期结果。不清楚你真正想做什么。例如,聚合查询真的合适吗。