Dúvida de SQL muito loco
13/03/2019
0
Tenho esse select abaixo, e asism, se for o tip = 1 ou 2 tem que dimiinuir o valor mas depois voltar a somar;
SELECT distinct
c.tip, c.VALOR
FROM
contamensalista c
WHERE
c.codmen = '000014'
AND c.data BETWEEN '2018-07-23' AND '2019-03-12'
AND c.codope IN ('D' , 'C')
AND c.sist IN ('F' , 'A', 'N', 'C')
eu obtive esse resultado:
3 48.28
3 694.52
1 1871.28
2 498.57
3 313.82
3 32.10
3 360.84
alguém tem alguma ideia?
Fernando Wahl
Posts
13/03/2019
Fernando Wahl
Obrigado pela ajuda.
13/03/2019
Alex Lekao
Acho que o que o Emerson quer, eh que seja informado como deveria ser os cálculos, exemplo pratico de como deveria ficar.
Olhei os valores e não consegui identificar se qdo apareceu o 1 foi diminuído ou não, etc.
Dependendo da Situação, vc pode colocar um case when ou usar um outer apply com a situação especifica fazendo o tratamento do 1 ou 2 e so informando no resultado.
Mas precisaríamos evoluir mais no entendimento do que vc precisa.
Atenciosamente,
14/03/2019
Emerson Nascimento
tip VALOR 3 48.28 3 694.52 1 1871.28 2 498.57 3 313.82 3 32.10 3 360.84
e qual resultado deveria ter sido apresentado, com base naqueles dados?
14/03/2019
Alex Lekao
Quando você esta dizendo que o campo C.TIPO sendo 1 ou 2 tem que subtrair o valor, o valor tem que ficar negativo, eh isso?
Caso seja isso, só consigo pensar que vc tem que usar o Case When.
No caso ficaria mais ou menos assim:
SELECT distinct c.tip, case when c.tipo = 1 then -c.VALOR when c.tipo =2 then -c.valor else c.valor end as valor FROM contamensalista c WHERE c.codmen = '000014' AND c.data BETWEEN '2018-07-23' AND '2019-03-12' AND c.codope IN ('D' , 'C') AND c.sist IN ('F' , 'A', 'N', 'C')
Clique aqui para fazer login e interagir na Comunidade :)