Usuário com melhor resposta
Subtração no SQL SERVER

Pergunta
-
Tenho uma tabela CAIXA e o campo VALOR e o campo TIPO. No campo valor é lançado o valor e no tipo se o valor lançado é débito ou crédito.
Eu quero encontrar o valor que o cliente deve:
VALOR DEVIDO = (SOMA DE TODOS OS DÉBITOS) - (SOMA DE TODOS OS CRÉDITO)
tipo: (sum(CampoVALOR) quando o CampoTipo for Crédito) - (sum(CampoVALOR) quando o CampoTipo for Débito)
Alguém poderia me dar ajudar
Respostas
-
Boa tarde,
Eduardo, segue uma sugestão para testes:
sum(Valor * case when Tipo = 'Débito' then 1 else -1 end) as Soma
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Eduardo Michetti sexta-feira, 27 de março de 2020 21:12
Todas as Respostas
-
Boa tarde,
Eduardo, segue uma sugestão para testes:
sum(Valor * case when Tipo = 'Débito' then 1 else -1 end) as Soma
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Eduardo Michetti sexta-feira, 27 de março de 2020 21:12
-
-
-
Eduardo, não entendi corretamente o seu post inicial por isso na minha sugestão anterior a soma dos créditos está sendo subtraída da soma dos débitos. Para ficar conforme você disse no seu último post experimente dessa forma:
sum(Valor * case when Tipo = 'DEBITO' then -1 else 1 end) as Soma
Nesse código está sendo utilizado o comando Case para verificar o conteúdo da coluna Tipo. Quando a coluna Tipo é igual a 'DEBITO' o valor é multiplicado por -1, fica negativo e no final temos a soma de um valor negativo. ou seja, uma subtração.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Editado gapimex sexta-feira, 27 de março de 2020 20:40
-
-
Muito show, vc não tem ideia o tanto q me ajudou. Código tinha outras variações, ficou assim:
sum(CxMovValor * case when ((CxMovHistorico<>'VALOR TRANSPORTADO')AND(CxMovTipoLanc = 'CREDITO')AND(CxMovFormaPG='DINHEIRO')) then 1 when ((CxMovTipoLanc = 'DEBITO')AND(CxMovFormaPG='DINHEIRO')) then -1 end)
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 30 de março de 2020 13:18