› Fóruns › SQL e PL/SQL › Condições no WHERE › Condições no WHERE
Tudo bem, realmente não soube transmitir, por isso vo colocar todo o SQL e explicar mais detalhadamente.
Como podem ver no SELECT faço um CASE para fazer SUBSELECT’s separando o calculo de “Data Início do Ano Passado” e outro de “Data Início do Ano Atual”.
Então no WHERE também tenho que fazer o mesmo CASE que criei no SELECT porque para cada caso uso uma condição diferente.
Como descobrir que não é possível utilizar o CASE deste modo, ainda não conseguir encontrar um outro método.
E 1000 desculpas se ficou muito grande!!!
[sql]
SELECT cod_ben,
CASE WHEN TO_CHAR(SYSDATE,’DD/MM/’) 0
THEN
(
SELECT SUM(a.dt_pagamento – a.dt_vencto)
FROM sis.boleto_ben a INNER JOIN sis.benefics b USING(cod_ben)
INNER JOIN sis.ativacao_ben c USING(cod_ben)
WHERE c.dthr_final is null
and b.cod_emp = 0
and cod_ben = 1821001
and a.dt_vencto >= TO_DATE(TO_CHAR(b.dtcad,’DD/MM/’) || (TO_CHAR(SYSDATE,’YYYY’)-1))
and a.dt_pagamento > a.dt_vencto
and a.vlr_pago > a.vlr_boleto
)
END
ELSE
CASE WHEN TO_CHAR(a.dt_vencto – TO_DATE(TO_CHAR(b.dtcad,’DD/MM/’) || (TO_CHAR(SYSDATE,’YYYY’)))) > 0
THEN
(
SELECT SUM(a.dt_pagamento – a.dt_vencto)
FROM sis.boleto_ben a INNER JOIN sis.benefics b USING(cod_ben)
INNER JOIN sis.ativacao_ben c USING(cod_ben)
WHERE c.dthr_final is null
and b.cod_emp = 0
and cod_ben = 1821001
and a.dt_vencto >= TO_DATE(TO_CHAR(b.dtcad,’DD/MM/’) || (TO_CHAR(SYSDATE,’YYYY’)))
and a.dt_pagamento > a.dt_vencto
and a.vlr_pago > a.vlr_boleto
)
END
END qntd_acum
FROM sis.boleto_ben a INNER JOIN sis.benefics b USING(cod_ben)
INNER JOIN sis.ativacao_ben c USING(cod_ben)
WHERE CASE WHEN TO_CHAR(SYSDATE,’DD/MM/’) = TO_DATE(TO_CHAR(b.dtcad, DD/MM/) || (TO_CHAR(SYSDATE, YYYY)-1))’
ELSE
‘and a.dt_vencto >= TO_DATE(TO_CHAR(b.dtcad, DD/MM/) || (TO_CHAR(SYSDATE, YYYY)))’
END
and cod_ben = 1821001
and ((a.dt_vencto >= TO_DATE(TO_CHAR(b.dtcad,’DD/MM/’) || (TO_CHAR(SYSDATE,’YYYY’)-1))) OR (a.dt_vencto >= TO_DATE(TO_CHAR(b.dtcad,’DD/MM/’) || (TO_CHAR(SYSDATE,’YYYY’)))))
and ROWNUM = 1
[/sql]