none
Condições case sum RRS feed

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

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

    Aguardo um breve retorno.

    Abs


    • Editado André Talon quarta-feira, 28 de março de 2018 20:21
    quarta-feira, 28 de março de 2018 20:18

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

    https://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
    quinta-feira, 29 de março de 2018 11:14
  • 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.22

    Se 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
    quinta-feira, 29 de março de 2018 12:42

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

    quarta-feira, 28 de março de 2018 20:33
  • 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

    quarta-feira, 28 de março de 2018 20:52
  • 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

    quarta-feira, 28 de março de 2018 21:17
  • 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-DF     

    https://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
    quinta-feira, 29 de março de 2018 11:14
  • 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.22

    Se 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
    quinta-feira, 29 de março de 2018 12:42
  • 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.Identificador

    Resultado:

    Identificador Valor Total
    001   77.31
    123 26.00
    250 99.00
    620 99.00
    899 21.50
    999 60.66
    E85 16.22

    quinta-feira, 29 de março de 2018 13:10