Dúvida de SQL muito loco
Gostaria da ajuda de alguém que manja muito de SQL.
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?
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
Curtidas 0
Respostas
Emerson Nascimento
13/03/2019
qual o resultado esperado?
GOSTEI 0
Fernando Wahl
13/03/2019
Boa tarde Emerson, o resultado não influencia muito, pois sempre troca os valores o que vai obedecer a regra seria o campo c.tip. por que tem que diminuir quando é 1 ou 2.
Obrigado pela ajuda.
Obrigado pela ajuda.
GOSTEI 0
Alex Lekao
13/03/2019
Oi Fernando, boa tarde!!
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,
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,
GOSTEI 0
Emerson Nascimento
13/03/2019
você obteve esse resultado:
e qual resultado deveria ter sido apresentado, com base naqueles dados?
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?
GOSTEI 0
Alex Lekao
13/03/2019
Fernando,
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:
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')
GOSTEI 0