DISTINCT NÃO FUNCIONA!!

22/04/2013

0

Olá pessoal!

Preciso que saia somente uma linha da coluna T0.ITEMCODE e não está funcionndo. Veja o Script:

SELECT DISTINCT T0.[ItemCode], T0.[Dscription]AS Descricao,
CONVERT(DECIMAL(10,0),SUM(T0.[Quantity])) AS QUANTIDADE,
CONVERT(DECIMAL(10,3),SUM(T0.[VatSum])) AS VALOR_TOTAL,
SUM(T0.[PriceBefDi]) AS IMPOSTO,
((T0.[PriceBefDi]+(T0.[VatSum]))/ T0.[Quantity]) AS CUSTO_MEDIO
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DocEntry = T1.DocEntry
WHERE t1.DocDate BETWEEN '2012-02-01 00:00:00.000' AND '2012-12-31 00:00:00.000'
GROUP BY T0.Dscription, T0.ItemCode, T0.[PriceBefDi], T0.[VatSum], T0.Quantity
ORDER BY T0.ItemCode

Observe que o T0.[ItemCode] está sendo duplicado. Obrigado pela ajuda..






Cesar Augusto

Cesar Augusto

Responder

Posts

23/04/2013

Douglas

Cesár, explique melhor sua ideia, pois como você quer um resultado com apenas uma linha ?
ou você esta querendo dizer, que não quer a repetição dos dados.
Responder

23/04/2013

Alex Lekao

Ola Cesar, bom dia!!!

Acredito que o problema esteja no agrupamento que vc esta usando.

Verifique eliminar os campos que estão sendo agrupados e calculados na linha do select e verifica se funciona.

Espero ter podido ajudar.

Abraco.

Alex - Lekao
Responder

28/04/2013

Cesar Augusto

Cesár, explique melhor sua ideia, pois como você quer um resultado com apenas uma linha ?
ou você esta querendo dizer, que não quer a repetição dos dados.


Boa noite!!
Não quero a repetição dos dados, ou seja, que a coluna ITEMCODE não se repita. Obrigado.
Responder

28/04/2013

Cesar Augusto

Ola Cesar, bom dia!!!

Acredito que o problema esteja no agrupamento que vc esta usando.

Verifique eliminar os campos que estão sendo agrupados e calculados na linha do select e verifica se funciona.

Espero ter podido ajudar.

Abraco.

Alex - Lekao


Boa noite Alex!
Se eu retirar os campos do grupamento, da uma mensagem de erro no GROUP BY.
Responder

29/04/2013

Romilson Cardoso

Bom dia Cesar, poderia postar pelo menos alguns linha do resultado a onde esta repetido, para quer posso ter uma idéias do seu select?
Responder

29/04/2013

Alex Lekao

Oi Cesar, bom dia!!!

A minha sugestao seria para retirar do group by as itens que estao recebendo os comandos de agrupamento como o sum o count, etc.
Responder

30/04/2013

Cesar Augusto

Bom dia Cesar, poderia postar pelo menos alguns linha do resultado a onde esta repetido, para quer posso ter uma idéias do seu select?


Olá..Sou novo por aqui, então não tenho muita prática em postar o resultado da consulta, mas acho que dará para ter uma idéia. Obseve que a coluna ItemCode esta duplicando. Preciso que liste todas as demais informações (descrição, Quantidade, etc...) por ItemCode. Obrigado..

ItemCode Descricao QUANTIDADE VALOR_TOTAL IMPOSTO CUSTO_MEDIO
000011 EIXO DE DIRECAO DO SISTEMA DE VACUO RC C2256046 ORIG 1 16.150 100.000000 116.150000000000000000
000018 TONER PB RC TIPO20D AF200 ORIG CART DST 1 16.150 100.000000 116.150000000000000000
000023 ROLO DE ALIMENTACAO DE ORIGINAIS RC C2173053 ORIG 1 3.881 100.000000 103.880800000000000000
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 2 1.320 17.000000 9.160000000000000000
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 3 0.000 18.000000 6.000000000000000000
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 3 2.017 17.330000 6.449066666666666666
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 3 2.410 20.620000 7.676666666666666666
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 5 3.768 19.420000 4.637600000000000000
000046 BUCHA FUSOR AL/AR/XD GEN G265 SP NBRGP0567FCZZ ORIG 10 7.762 20.000000 2.776160000000000000
000059 BUCHA DA UNIDADE DE LIMPEZA RC A2322289 ORIG 2 0.282 1.410000 0.846000000000000000
000059 BUCHA DA UNIDADE DE LIMPEZA RC A2322289 ORIG 2 0.393 1.270000 0.831600000000000000
000059 BUCHA DA UNIDADE DE LIMPEZA RC A2322289 ORIG 2 0.402 1.300000 0.850800000000000000
Responder

30/04/2013

Cesar Augusto

Oi Cesar, bom dia!!!

A minha sugestao seria para retirar do group by as itens que estao recebendo os comandos de agrupamento como o sum o count, etc.


OK Alex. Segui a sua sugestão e não deu certo..Como eu te disse, surge o erro de agrupamento no GROUP BY. Ou seja, retirei os itens que tem os comandos de agrupamento (T0.[PriceBefDi], T0.[VatSum], T0.Quantity) ficando apenas (T0.Dscription, T0.ItemCode) e deu a mensagem abaixo). Obrigado...



(Mensagem 8120, Nível 16, Estado 1, Linha 7
Column 'PCH1.PriceBefDi' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Mensagem 8120, Nível 16, Estado 1, Linha 7
Column 'PCH1.VatSum' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Mensagem 8120, Nível 16, Estado 1, Linha 7
Column 'PCH1.Quantity' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Mensagem 145, Nível 15, Estado 1, Linha 3
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Responder

02/05/2013

Cesar Augusto

Olá pessoal!! Alguma luz??rss..estou precisando urgentimente resolver esta questão...Se alguém puder me ajudar....
Responder

10/05/2013

Fabricio Sartori

O problema esta em seu conta do "CUSTO_MEDIO"
Para fazer a conta do jeito que esta, o SQL tem que ter o campo individualizado(fazer parte do group by), ao invés de fazer a conta da forma que você esta fazendo trabalhe com a somatória dos campos como abaixo.


SELECT 
	T0.[ItemCode], 
	T0.[Dscription]AS Descricao, 
	CONVERT(DECIMAL(10,0),	SUM(T0.[Quantity])) AS QUANTIDADE,
	CONVERT(DECIMAL(10,3),	SUM(T0.[VatSum])) AS VALOR_TOTAL,
	SUM(T0.[PriceBefDi]) AS IMPOSTO,
	((sum(T0.[PriceBefDi])+(sum(T0.[VatSum])))/ sum(T0.[Quantity])) AS CUSTO_MEDIO
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DocEntry = T1.DocEntry
WHERE t1.DocDate BETWEEN '2012-02-01 00:00:00.000' AND '2012-12-31 00:00:00.000'
GROUP BY T0.Dscription, T0.ItemCode
ORDER BY T0.ItemCode

Responder

14/05/2013

Cesar Augusto

Arrebentou Fabricio!!!Excelente meu caro...Deu certinho. É por isto que sou um grande usuário de fóruns (apesar de ser um novato aqui no DevMedia), pois sei que encontrarei profissionais competentes e dispostos a ajudar. Forte abraço e muito obrigado!!!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar