none
Como cálcular o saldo para duas colunas "Saldo Devedor" e "Saldo Credor" RRS feed

  • Pergunta

  • Boa tarde.

    Tenho uma Procedure que vai calcular o saldo devedor e o saldo credor. Só que o resultado não é o esperado:

    A ideia é que o saldo deve figurar apenas para a coluna que tenha um valor débito ou crédito e que o saldo deve ser apenas valores positivos e não valores negativos. Aqui vai a minha consulta quem poder ajudar a melhorar:

    Att: A minha tabela movimentos têm duas colunas uma para Valores a Débito e outra para Valores a Crédito.
    ALTER PROCEDURE dbo.BalanceteSintetico
    
    AS
    BEGIN
    	
    SET NOCOUNT ON; 
    
    SELECT c.idConta, c.nomeConta, 
        sum(m.debito) AS Total_Debito, 
        sum(m.credito) AS Total_Credito, 
        sum(m.debito)-sum(m.credito) AS Saldo_Debito,
        sum(dedito)-sum(m.debito) AS Saldo_Credito
      
        FROM Conta c	
        JOIN Movimento m	
          ON m.contaCodigo LIKE c.idConta + '%' 
    	  
    GROUP BY c.idConta, c.nomeConta
    ORDER BY c.idConta 
    END

    Obrigado.

    Atentamente,



    NekFred,Lda

    quinta-feira, 12 de junho de 2014 14:16

Respostas

  • Você pode fazer isso com o SUM, segue um exemplo abaixo:

    SELECT Color, SUM(ListPrice), SUM(StandardCost)
    FROM Production.Product
    WHERE Color IS NOT NULL 
        AND ListPrice != 0.00 
        AND Name LIKE 'Mountain%'
    GROUP BY Color
    ORDER BY Color;
    GO


    Por favor, lembre-se de “Marcar como Resposta” as respostas 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.


    • Editado Jean Carlos Galhardi quinta-feira, 12 de junho de 2014 14:42
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    • Não Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    quinta-feira, 12 de junho de 2014 14:42
  • Deleted
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:29
    quinta-feira, 12 de junho de 2014 18:53

Todas as Respostas

  • Você pode fazer isso com o SUM, segue um exemplo abaixo:

    SELECT Color, SUM(ListPrice), SUM(StandardCost)
    FROM Production.Product
    WHERE Color IS NOT NULL 
        AND ListPrice != 0.00 
        AND Name LIKE 'Mountain%'
    GROUP BY Color
    ORDER BY Color;
    GO


    Por favor, lembre-se de “Marcar como Resposta” as respostas 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.


    • Editado Jean Carlos Galhardi quinta-feira, 12 de junho de 2014 14:42
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    • Não Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:47
    quinta-feira, 12 de junho de 2014 14:42
  • Deleted
    • Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:29
    quinta-feira, 12 de junho de 2014 18:53
  • Jose Diz, Obrigado pela ajuda resolvi o problema com o exemplo 2. E aqui vai o resultado:

    SELECT c.idConta, c.nomeConta, 
        sum(m.debito) AS Débito, 
        sum(m.credito) AS Crédito, 
    	CASE WHEN Sum(m.debito) > Sum(m.credito)
            THEN (Sum(m.debito) - Sum(m.credito)) ELSE 0 END  AS [Saldo_Débito],
            CASE WHEN Sum(m.credito) > Sum(m.debito)
    	THEN (Sum(m.credito) - Sum(m.debito)) ELSE 0 END AS [Saldo_Crédito]
                                    
        FROM Conta c	
        INNER JOIN Movimento m	
          ON m.contaCodigo LIKE c.idConta + '%'  -- O segredo está aqui, o campo idConta vem depois do LIKE
    	  
    GROUP BY c.idConta, c.nomeConta
    ORDER BY c.idConta 

    Aqui vai o resultado:


    NekFred,Lda

    sexta-feira, 13 de junho de 2014 09:46