[firebase-br] Erro de agregação em SQL

Fernando Alécio fernando.bg em gmail.com
Ter Dez 16 10:07:10 -03 2014


Bom dia a todos

Seguinte estou com um problema de agregação em uma SQL que funcionava no 
firebird 1.0 e no firebird 1.5 não funciona da erro de agregação.
A SQL é a seguinte:

select
    p.cod_produto,
    p.descricao descricao_produto,
    p.cod_grupo,
    g.descricao descricao_grupo,
    pg.cod_grade,
    pg.cod_barra,
    pg.referencia,
    pg.PRECO_CUSTO_REAL,
    pg.PRECO_RECOLOCACAO,
    pg.preco_vista,
    pg.preco_prazo,
    p.unidade,
    pg.ESTOQUE_MIN,
    ie.icms_cst,
    sum(ps.estoque_fisico) xEstoque
from produtos p
inner join grupos_produto g on
    (p.cod_grupo = g.cod_grupo)
inner join produtos_grade pg on
    (p.cod_produto = pg.cod_produto)
inner join produtos_saldos ps on
    (pg.cod_produto = ps.cod_produto and
     pg.cod_grade = ps.cod_grade)
inner join impostos_empresas ie on
    (p.cod_imposto = ie.cod_imposto)
where
    (p.baixa_estoque = 1) and
    (ps.codigo_empresa in (1)) and
    (ie.codigo_empresa = 1)
group by
    p.cod_produto,
    p.descricao,
    p.cod_grupo,
    g.descricao,
    pg.cod_grade,
    pg.cod_barra,
    pg.referencia,
    pg.PRECO_CUSTO_REAL,
    pg.PRECO_RECOLOCACAO,
    pg.preco_vista ,
    pg.preco_prazo ,
    p.unidade,
    pg.estoque_min,
    ie.icms_cst

having
    (select
       count(*)
     from
       produtos_ind pi
     where ((pi.cod_pro_ind   = pg.cod_produto) and
            (pi.cod_grade_ind = pg.cod_grade  ))) = 0

order by
    p.cod_produto,
    pg.cod_grade

o erro retornado é o seguinte :

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the HAVING clause (neither an aggregate function 
nor a part of the GROUP BY clause).

Se for retirado o HAVING  funciona normalmente, mas não traz o resultado 
desejado. Alguém saberia me dizer como posso modificar a SQL para trazer 
o resultado desejado?





Mais detalhes sobre a lista de discussão lista