Usuário com melhor resposta
Como cálcular o saldo para duas colunas "Saldo Devedor" e "Saldo Credor"

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
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
-
Deleted
- Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:29
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
-
Deleted
- Marcado como Resposta Jesus Spray sexta-feira, 13 de junho de 2014 09:29
-
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