Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Super_Zica_Man

Query SQL com IF

Recommended Posts

Tem uma tabela onde tem todas movimentações do Caixa com os valores, porém os valores estão todos como positivo, o que determina se é negativo ou positivo é uma coluna tipo (que é Credito ou Debito).

Agora em um relatório precisaria totalizar todo crédito e todo débito que tem a partir de um plano de conta.

 

SELECT SUM(valor) as total_valor GROUP BY plano_conta

Porém ai, somaria todos sendo positivos...

 

Escrevendo em linguagem de programação ficaria algo assim:

SELECT IF tipo = 'Credito' total_credito += valor ELSE total_debito += valor GROUP BY plano_conta

Porém, não sei se tem a possibilidade de criar essas variáveis numa consulta do MySQL, alguém mais experiente pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao meu ver você gravou os dados errados. Os valores negativos devem ficar negativos e os positivos devem ficar positivos. Agora, vai ter que fazer malabarismo para corrigir. Tem a possibilidade de modificar no banco de dados e no programa?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Case

 

select ((case when tipo = 'D' then -1 else 1 end) * valor) valor

from tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao meu ver você gravou os dados errados. Os valores negativos devem ficar negativos e os positivos devem ficar positivos. Agora, vai ter que fazer malabarismo para corrigir. Tem a possibilidade de modificar no banco de dados e no programa?

 

Carlos Eduardo

 

Nesse caso seria interessante o refatoramento mesmo como você citou, porém como já existem muitos dados.Nesse momento vou ter que improvisar, já que todo sistema já está montado nesse estilo e uma mudança agora atrapalharia o planejamento.Essa query é apenas para um relatório

 

Case

 

select ((case when tipo = 'D' then -1 else 1 end) * valor) valor

from tabela

 

Obrigado vou realizar o teste qualquer dúvida retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.