top of page

Where com subselect + CASE


Meu objetivo abaixo é retornar os dados de um determinado período. Podemos considerar neste exemplo período 2 como período futuro e 1 período ativo, sendo que os dados que eu quero que retorne será o período 2 MAAAAS se não tiver período 2 na tabela APERIODO, eu quero que retorne os dados do período 1. Com isso, dentro da minha cláusula WHERE eu crio um subselect da tabela APRIODO onde o status seja:

2 se existir, se não, retorne 1.



Note que dentro do meu WHERE (1º) eu faço um SELECT e chamo outro WHERE, e dentro deste 2º WHERE, eu crio uma condicional com o IF (case). Caso exista dados com período 2, considere este, se não, considere 1.

WHERE ASALDOBANCOHOR.FIMPER = (

SELECT FIMMENSAL

FROM aperiodo

WHERE APERIODO.STATUSPERIODO = CASE

WHEN EXISTS (SELECT 1 FROM aperiodo WHERE APERIODO.STATUSPERIODO = 2)

THEN 2

ELSE 1

END

)

bottom of page