Usuário com melhor resposta
Soma das colunas com valores divergentes

Pergunta
-
Estou com dificuldade em retornar com a soma de uma coluna, o que retorna é a soma total desta coluna, segue abaixo minha consulta;
SELECT DISTINCT
T2.[TaxId4] as CPF,
T1.Price as ValorTotal,
(select sum(t1.Price) from inv1 t1) as 'Total Itens',
T0.[DocDate] As dataVenda ,
T1.[Dscription] as Descricao,
T1.[ItemCode] as codigoItem,
T1.[Quantity] as Quantidade,
T0.[Serial] as NotaFiscal
FROM OINV T0
INNER JOIN INV1 T1
ON
T0.[DocEntry] = T1.[DocEntry]
INNER JOIN CRD7 T2
on
T2.CardCode = T0.CardCode
where T0.CANCELED = 'N'
and T2.TaxId4 != ''
--and T0.[Serial] = '28353'
and t0.DocDate = '2016-12-27'RESULTADO DA CONSULTA
CPF Valor Valor Total (SUM) Data Descrição Código Quantidade NF
001.007.997-10 29,90 7.559.285,93 2016-12-27 GESSO PEDRA 013857 1 21081
128.361.252-68 45,70 7.559.285,93 2016-12-27 HYDROGUM 5 034071 1 21077
290.292.441-00 69,90 7.559.285,93 2016-12-27 ALLCEM CORE 034331 1 21053
344.063.602-04 4,45 7.559.285,93 2016-12-27 BICARBONATO 035556 2 21063O Valor de retorno no campo Valor Total desse dia é (149,95), não 7 milhões.
Respostas
-
a Coluna
[Total Itens] e o total de que ? se for :
total de itens vendido por dia :[Total Itens] =SUM(T1.Price) OVER(PARTITION BY T0.DocDate),
total de itens vendido por dia e por CPF :[Total Itens] =SUM(T1.Price) OVER(PARTITION BY T0.DocDate,T2.[TaxId4])
Wesley Neves
- Editado Wesley Neves quarta-feira, 28 de dezembro de 2016 15:52 correção
- Marcado como Resposta Robson William Silva sexta-feira, 30 de dezembro de 2016 10:59
Todas as Respostas
-
Seu critério
(select sum(t1.Price) from inv1 t1) as 'Total Itens',
está errado , ele esta somando todos os valores da tabela,
se vc quer saber o total por data
Acredito que assim funcione
SELECT DISTINCT T2.[TaxId4] AS CPF , T1.Price AS ValorTotal , [Total Itens] =SUM(T1.Price) OVER(PARTITION BY T0.DocDate ), T0.[DocDate] AS dataVenda , T1.[Dscription] AS Descricao , T1.[ItemCode] AS codigoItem , T1.[Quantity] AS Quantidade , T0.[Serial] AS NotaFiscal FROM OINV T0 INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry] INNER JOIN CRD7 T2 ON T2.CardCode = T0.CardCode WHERE T0.CANCELED = 'N' AND T2.TaxId4 != '' --and T0.[Serial] = '28353' AND T0.DocDate = '2016-12-27';
Wesley Neves
-
Wesley, obrigado pelo retorno
adicionei a na consulta o valor que retornou foi 9.337,06 e o total da coluna referente esse dia é 4.647,57.
CPF ValorTotal Total Itens dataVenda Descricao codigoItem Quantidade NotaFiscal
000.671.592-30 2,1000 9.337,06 27/12/2016 ROLETE ALGODAO DENTAL SOFT PLUS C/100 - SOFT PLUS 025257 4,0000 21064
000.671.592-30 4,4900 9.337,06 27/12/2016 FLUOR GEL 200ML ACIDULADO CEREJA- MAQUIRA 030876 2,0000 21064
-
a Coluna
[Total Itens] e o total de que ? se for :
total de itens vendido por dia :[Total Itens] =SUM(T1.Price) OVER(PARTITION BY T0.DocDate),
total de itens vendido por dia e por CPF :[Total Itens] =SUM(T1.Price) OVER(PARTITION BY T0.DocDate,T2.[TaxId4])
Wesley Neves
- Editado Wesley Neves quarta-feira, 28 de dezembro de 2016 15:52 correção
- Marcado como Resposta Robson William Silva sexta-feira, 30 de dezembro de 2016 10:59
-
-
Bom dia,
Devido a falta de interação do autor dessa pergunta,
essa thread está sendo fechada. Caso o problema ainda
esteja ocorrendo, favor abrir uma nova thread.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
-
Boa tarde,
Acho que seria melhor verificar como é o relacionamento entre as tabelas (1:1, 1:N, etc) e se o Distinct é mesmo necessário, mas experimente fazer uns testes dessa forma:
with CTE_Base as ( SELECT DISTINCT T2.[TaxId4] as CPF, T1.Price as ValorTotal, T0.[DocDate] As dataVenda , T1.[Dscription] as Descricao, T1.[ItemCode] as codigoItem, T1.[Quantity] as Quantidade, T0.[Serial] as NotaFiscal FROM OINV T0 INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry] INNER JOIN CRD7 T2 on T2.CardCode = T0.CardCode where T0.CANCELED = 'N' and T2.TaxId4 != '' and -- T0.[Serial] = '28353' and t0.DocDate = '2016-12-27' ) select *, sum(ValorTotal) over(partition by dataVenda) as TotalItens from CTE_Base
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br