Sql 错误42803。列XXXX必须显示GROUP BY子句或在聚合函数中使用
尝试在Sum中进行over(按Id排序,在无界的前一行和当前行之间的asc行),我尝试为每个值获取一个累计和。据我所知: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-&
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返回相同的原始错误。您应该问一个新问题。简化查询。提供样本数据和预期结果。不清楚你真正想做什么。例如,聚合查询真的合适吗。