Ajuda comando DISTINCT

Firebird

24/10/2012

Estou fazendo sql abaixo usando o comando DISTINCT, POREM da este erro:Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).


SELECT distinct
ent.cod_entrada,ent.cod_cliente,ENT.DATA,ENT.cod_fornecedores,PED.valor_totalpuxada,cli.nome,FORN.fornecedor
FROM ENTRADAS ENT
inner join clientes cli on cli.cod_clientes = ent.cod_cliente
inner join fornecedores forn on forn.cod_fornecedor = ent.cod_fornecedores
inner join pedidos ped on ped.cod_entrada = ent.cod_entrada
where ent.cod_fornecedores = :PARCODIGO
group BY ENT.cod_entrada
ORDER BY ENT.cod_entrada

me ajudem por favor
Newton Silva

Newton Silva

Curtidas 0

Melhor post

Claudia Nogueira

Claudia Nogueira

26/10/2012

Só um detalhe, não tem necessidade de usar o DISTINCT e o GROUP na mesma sentença SQL. Usa um ou outro. Para o que você precisa, somente o GROUP já resolve.

SELECT ent.cod_entrada,ent.cod_cliente,ENT.DATA,ENT.cod_fornecedores,cli.nome,FORN.fornecedor, SUM(PED.valor_totalpuxada) AS valor_totalpuxada
FROM ENTRADAS ENT
inner join clientes cli on cli.cod_clientes = ent.cod_cliente
inner join fornecedores forn on forn.cod_fornecedor = ent.cod_fornecedores
inner join pedidos ped on ped.cod_entrada = ent.cod_entrada
where ent.cod_fornecedores = :PARCODIGO
group BY ENT.cod_entrada,ent.cod_cliente,ENT.DATA,ENT.cod_fornecedores,cli.nome,FORN.fornecedor
ORDER BY ENT.cod_entrada


Obrigado deu certo, me desculpe..mais vc pode me auxilar como eu faço para somar os campos "PED.valor_totalpuxada" nesta mesma SQL?

Obrigado
GOSTEI 1

Mais Respostas

Tiago

Tiago

24/10/2012

Boa tarde, esse erro é bastante comum, você tem de colocar todas as colunas que você está listando no select na cláusula GROUP BY. Logo abaixo segue o seu script com a modificação.

SELECT distinct
ent.cod_entrada,ent.cod_cliente,ENT.DATA,ENT.cod_fornecedores,PED.valor_totalpuxada,cli.nome,FORN.fornecedor
FROM ENTRADAS ENT
inner join clientes cli on cli.cod_clientes = ent.cod_cliente
inner join fornecedores forn on forn.cod_fornecedor = ent.cod_fornecedores
inner join pedidos ped on ped.cod_entrada = ent.cod_entrada
where ent.cod_fornecedores = :PARCODIGO
group BY ENT.cod_entrada,ent.cod_cliente,ENT.DATA,ENT.cod_fornecedores,PED.valor_totalpuxada,cli.nome,FORN.fornecedor
ORDER BY ENT.cod_entrada





Espero ter ajudado
GOSTEI 0
Newton Silva

Newton Silva

24/10/2012

Obrigado deu certo, me desculpe..mais vc pode me auxilar como eu faço para somar os campos "PED.valor_totalpuxada" nesta mesma SQL?

Obrigado
GOSTEI 0
POSTAR