DISTINCT NÃO FUNCIONA!!

22/04/2013

4

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..






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
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
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
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira