erro usando Group by

09/01/2016

2

Bom dia. Já procurei em tudo quanto é lugar a solução pra esse erro. Porém só encontro solução pra casos simples que eu sei que não é o meu caso. O meu caso é o seguinte:
Tenho um sql mais ou menos assim:

select campo1, campo2, campo3, campo4, campo5, unitario, qtd, total from tabela01

porém há casos em que os registro se repetem, e eu não quero isso. Pra que não ocorra essa repetição eu uso o group by, mas uso a função sum nos campos unitario, qtd e total. O SQL fica assim:

select campo1, campo2, campo3, campo4, campo5, sum(unitario*qtd)/sum(qtd) untario, sum(qtd) qtd, sum(total) total group by 1,2,3,4,5

O Campo unitario é uma média de valores unitários porém usando a quantidade como peso (média composta).

Já tentei tirar esse campo unitário que o problema é com ele, mais nada. eu tiro os campos agregados e tiro a parte "group by"

Sempre aparece o erro: Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)..

Porém todos o campos estão com uma função agregadora ou no group by.


SQL original:

select

loja empresa,
((190000)-(select min(CAST(DOCUMENTO as integer)) from itvendanf) +4+cast(documento as integer)) controle,
--documento controle,

produto cod_produto,

(
select count(produto)

from itvendanf ittr

where itvendanf.documento=ittr.documento
and ittr.produto>=itvendanf.produto
)
seq_produto,
case
when (CPF_CNPJ is not null and CPF_CNPJ<>'') then
CAST(trim(CPF_CNPJ) AS VARCHAR(20))
else
cast(CODIGO as varchar(20))
end CNPJ_CPF,

cst cod_sittrib,

0 base_icms,

0 redu_icms,

vendedor,

0 base_ipi,

cod_fiscal cfop,

(
select unidade
from produto
where codigo=produto
) unidade,

(
select nome
from produto
where codigo=produto
) nome_produto,

1 quant_unidade,

'FINALIZADA' as situacao,

sum(quantidade) quantidade,

sum(quantidade*unitario)/sum(quantidade) vl_unitario,

sum(sub_total) vl_total,

sum(valor_icms) vl_icms,

sum(vlr_desc) vl_desc,

sum(perc_ipi),

sum(valor_ipi) vl_ipi
from (select * from ITVENDANF where documento<10) itvendanf
left join cliente on cliente.codigo=itvendanf.cliente
group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

Tô usando o IBExpert
Responder

Posts

13/01/2016

Ronaldo Filho

Boa tarde Grande.

Dá uma olhada na parte que tu usa sub-selects, se não me engano eles não entram na partícula group by
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira