Postgresql 无法使用字段总和过滤查询

Postgresql Can't filter a query using sum of field

实际上我需要获取 SUM(row) > 0 的所有行,但是当我造句并执行它时:

select o.corden,
    o.cproveedor,
    o.fecha_orden,
    o.status,
    o.monto_total,
    SUM(od.cant_restante) as cant_pend,
    COUNT(od.cart_comercial) as articulos,
    d.nombre as proveedor
from ordencompra o
inner join ordencompra_det od on o.corden = od.corden_det
inner join proveedores p on o.cproveedor = p.cproveedor
inner join data d on p.cdata = d.cdata
where o.status = 'PROCESADA'
    and cant_pend > 0
group by o.corden,
    d.nombre
order by o.corden asc

它说:列 << cant_pend >> 不存在! 所以我将其更改为:

select o.corden,
    o.cproveedor,
    o.fecha_orden,
    o.status,
    o.monto_total,
    SUM(od.cant_restante) as cant_pend,
    COUNT(od.cart_comercial) as articulos,
    d.nombre as proveedor
from ordencompra o
inner join ordencompra_det od on o.corden = od.corden_det
inner join proveedores p on o.cproveedor = p.cproveedor
inner join data d on p.cdata = d.cdata
where o.status = 'PROCESADA'
    and SUM(od.cant_restante) > 0
group by o.corden,
    d.nombre
order by o.corden asc

where clausule

不允许使用聚合函数

对句子有帮助吗?

您想要 having 子句:

select o.corden,
    o.cproveedor,
    o.fecha_orden,
    o.status,
    o.monto_total,
    SUM(od.cant_restante) as cant_pend,
    COUNT(od.cart_comercial) as articulos,
    d.nombre as proveedor
from ordencompra o
inner join ordencompra_det od on o.corden = od.corden_det
inner join proveedores p on o.cproveedor = p.cproveedor
inner join data d on p.cdata = d.cdata
where o.status = 'PROCESADA'
group by o.corden,
    d.nombre
having SUM(od.cant_restante) > 0
order by o.corden asc