Usuário com melhor resposta
Condições case sum

Pergunta
-
Amigos boa tarde !
Preciso de mais uma vez uma grande ajuda para resolver a seguinte situação dentro de uma tabela, tenho as seguintes informações na tabela e preciso somar os valor pertinentes ao conjunto de identificadores.
Código Nome Identificador Valor
1 João 001 10.00
1 João 250 99.00
1 João 123 13.00
1 João E85 15.11
1 João 899 10.20
1 João 999 30.31
2 José 001 67.31 2 José 620 99.00
2 José 123 13.00
2 José E85 01.11
2 José 899 11.30
2 José 999 30.35Gostaria de uma forma com CASE ou outra forma que eu informasse o identificador e ele me trouxesse a soma dos valores enquanto existir o identificador individualizado na tabela para ficar da seguinte forma
Identificador Valor_Total
001 77.31
250 99.00
123 26.00
620 99.00
899 21.50
999 60.66
E85 16.22Aguardo um breve retorno.
Abs
- Editado André Talon quarta-feira, 28 de março de 2018 20:21
Respostas
-
Bom dia , Nos de um exemplo completo por favor.
Seque uma sugestão de totalizador usando windows functions
DECLARE @Exemplo TABLE ( Codigo INT, Nome VARCHAR(200), Identificador VARCHAR(3), Valor DECIMAL(18, 2)); INSERT INTO @Exemplo (Codigo, Nome, Identificador, Valor) VALUES (1, 'João', '001', 10.00), (1, 'João', '250', 99.00), (1, 'João', '123', 13.00), (1, 'João', 'E85', 15.11), (1, 'João', '899', 10.20), (1, 'João', '999', 30.31), (2, 'José', '001', 67.31), (2, 'José', '620', 99.00), (2, 'José', '123', 13.00), (2, 'José', 'E85', 01.11), (2, 'José', '899', 11.30), (2, 'José', '999', 30.35); SELECT E.Codigo, E.Nome, E.Identificador, E.Valor, [TotalPorIdentificador] = SUM(E.Valor) OVER (PARTITION BY E.Identificador) FROM @Exemplo AS E ORDER BY E.Identificador;
Wesley Neves - Brasilia-DFhttps://wesleyneves.wordpress.com/
SELECT Tab.[that's me:]
FROM
(
VALUES
('Wesley Neves'),
('Analista.NET'),
('Pós Graduando em Banco de Dados com ênfase em BI'),
('MTA -SQL Server'),
('MTA -Web Developed')
) AS Tab ("that's me:");
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Marcado como Resposta André Talon quinta-feira, 29 de março de 2018 13:09
-
Wesley bom dia, executei o seu código e o resultado seria quase isso que você mencionou , mas para ficar o exato que estou precisando era que não duplicasse os valores e identificadores.
Codigo Nome Identificador Valor TotalPorIdentificador
1 João 001 10.00 77.31
2 José 001 67.31 77.31
1 João 123 13.00 26.00
2 José 123 13.00 26.00
1 João 250 99.00 99.00
2 José 620 99.00 99.00
1 João 899 10.20 21.50
2 José 899 11.30 21.50
2 José 999 30.35 60.66
1 João 999 30.31 60.66
1 João E85 15.11 16.22
2 José E85 1.11 16.22Se desse por exemplo aparecer o identificador 001 e o valor total dele sem duplicar o valor total de 77.31 ficaria top.
- Marcado como Resposta André Talon segunda-feira, 2 de abril de 2018 09:34
Todas as Respostas
-
Boa tarde,
Não sei se entendi corretamente mas experimente fazer uns testes mais ou menos dessa forma para ver se é obtido o resultado esperado:
select Identificador, sum(Valor) as Valor_Total from Tabela group by Identificador
Assinatura: http://www.imoveisemexposicao.com.br
-
Não funcionou da forma
select Identificador, sum(Valor) as Valor_Total from Tabela group by Identificador
até mesmo porque os campos que entram no select são muito mais que o exemplo, eu estava pensando em algo assim mas não funcionou e também não sei se é coerente .
SUM(VALOR) CASE WHEN '001' THEN 'CÓDIGO 001'
OU SUM(VALOR) WHERE IDENTIFICADOR = '001'
Mas acho que viajei nas duas condições acima
-
Não consegui entender o que está faltando.
Acho melhor você postar mais detalhes. Poderia ser a query que você testou, o resultado obtido (pelo menos parte dele) e o resultado esperado. Ou então um exemplo mais completo.
Assinatura: http://www.imoveisemexposicao.com.br
-
Bom dia , Nos de um exemplo completo por favor.
Seque uma sugestão de totalizador usando windows functions
DECLARE @Exemplo TABLE ( Codigo INT, Nome VARCHAR(200), Identificador VARCHAR(3), Valor DECIMAL(18, 2)); INSERT INTO @Exemplo (Codigo, Nome, Identificador, Valor) VALUES (1, 'João', '001', 10.00), (1, 'João', '250', 99.00), (1, 'João', '123', 13.00), (1, 'João', 'E85', 15.11), (1, 'João', '899', 10.20), (1, 'João', '999', 30.31), (2, 'José', '001', 67.31), (2, 'José', '620', 99.00), (2, 'José', '123', 13.00), (2, 'José', 'E85', 01.11), (2, 'José', '899', 11.30), (2, 'José', '999', 30.35); SELECT E.Codigo, E.Nome, E.Identificador, E.Valor, [TotalPorIdentificador] = SUM(E.Valor) OVER (PARTITION BY E.Identificador) FROM @Exemplo AS E ORDER BY E.Identificador;
Wesley Neves - Brasilia-DFhttps://wesleyneves.wordpress.com/
SELECT Tab.[that's me:]
FROM
(
VALUES
('Wesley Neves'),
('Analista.NET'),
('Pós Graduando em Banco de Dados com ênfase em BI'),
('MTA -SQL Server'),
('MTA -Web Developed')
) AS Tab ("that's me:");
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Marcado como Resposta André Talon quinta-feira, 29 de março de 2018 13:09
-
Wesley bom dia, executei o seu código e o resultado seria quase isso que você mencionou , mas para ficar o exato que estou precisando era que não duplicasse os valores e identificadores.
Codigo Nome Identificador Valor TotalPorIdentificador
1 João 001 10.00 77.31
2 José 001 67.31 77.31
1 João 123 13.00 26.00
2 José 123 13.00 26.00
1 João 250 99.00 99.00
2 José 620 99.00 99.00
1 João 899 10.20 21.50
2 José 899 11.30 21.50
2 José 999 30.35 60.66
1 João 999 30.31 60.66
1 João E85 15.11 16.22
2 José E85 1.11 16.22Se desse por exemplo aparecer o identificador 001 e o valor total dele sem duplicar o valor total de 77.31 ficaria top.
- Marcado como Resposta André Talon segunda-feira, 2 de abril de 2018 09:34
-
Wesley obrigado pela ajuda você me esclareceu uma coisa , ficando assim oque eu precisava.
SELECT E.Identificador, SUM(E.Valor) AS 'Valor Total'
FROM @Exemplo AS E
GROUP BY E.IdentificadorResultado:
Identificador Valor Total
001 77.31
123 26.00
250 99.00
620 99.00
899 21.50
999 60.66
E85 16.22