2010-12-15 5 views
2

est-il possible d'utiliser un if dans une clause where?en utilisant une instruction if dans la clause Where

à savoir

WHERE (underwritername = 'underwriter') and (case when inceptiondate is null then (requestdate >= convert(datetime,'01/10/2009',103)) else (Inceptiondate >= convert(datetime,'01/10/2009',103)) ) and (requestdate <= convert(datetime,'31/10/2010',103))

essentiellement si une colonne est nulle, je dois utiliser une colonne alternative pour la sélection.

Merci beaucoup,

Adam

Répondre

6

Vous pouvez le faire en utilisant l'instruction CASE un peu différent:

WHERE (underwritername = 'underwriter') 
and (case when inceptiondate is null 
    AND requestdate >= convert(datetime,'01/10/2009',103) THEN 1 
    WHEN inceptiondate IS NOT NULL 
    AND Inceptiondate >= convert(datetime,'01/10/2009',103) THEN 1 ELSE 0 END = 1) 
and (requestdate <= convert(datetime,'31/10/2010',103)) 
+0

fantastique .. .. Mon cerveau thankyou obtient la logique, mais la syntaxe toujours m'échappe. :) –

+0

Ouais, la syntaxe est un peu difficile ... content qu'il fonctionne – Lamak

+0

pour une raison quelconque cela ne fonctionne plus pour moi .. soit mes données précédentes me trompaient ou j'ai changé quelque chose .. –

Questions connexes