J'ai besoin d'une condition de filtre à inclure dans une requête de sélection lorsqu'une condition encapsulée dans une fonction est satisfaite. Si la condition n'est pas remplie, l'état du filtre ne doit pas être appliqué.CASE construct dans where clause
code:
select col_a,col_b,cancel_Date from tab_a
where col_c = <<some_condition>>
and (case when oracle_function() = 'YES' then 'tab_a.cancel_date is null'
else null
)
Si je vous écris cette façon, il jette l'erreur "opérateur relationnel non valide". Se rendant compte que le cas devrait résoudre à une valeur à droite, j'ai essayé d'ajouter quelque chose comme ce qui ne me donne pas le résultat escompté lorsque la condition est satisfaite:
select col_a,col_b,cancel_Date from tab_a
where col_c = <<some_condition>>
and (case when oracle_function() = 'YES' then 'tab_a.cancel_date is null'
else '1'
) = '1'
Mon résultat attendu devrait être:
Si oracle_function() = OUI, alors ma requête devrait permettre de résoudre efficacement:
select col_a,col_b,cancel_Date from tab_a
where col_c = <<some_condition>> and tab_a.cancel_date is null;
Else:
select col_a,col_b,cancel_Date from tab_a
where col_c = <<some_condition>>;
Des pensées?
hmm. ..il suffit de le penser! Merci ! – Casey