2009-11-16 9 views
0

J'ai deux tables:Comment écrire cette condition T-SQL WHERE?

TableA 
    Col1 
    Col2 
TableB 
    Col3 
    Col4 

Je veux les réunir:

SELECT * from TableA join TableB ON (...) 

Maintenant, à la place de ... je dois écrire une expression qui évalue:

  1. Si Col3 n'est pas nul, alors vrai si Col1 == Col3; sinon
  2. Si Col3 est nul, true ssi Col2 == Col4

Quelle serait la façon la plus élégante de le faire?

Répondre

4
ON (Col1=Col3 OR (Col3 IS NULL AND Col2=Col4)) 

devrait faire l'affaire (si Col3 est nulle, Col1 = Col3 ne peut pas evalutate TRUE)

+0

Votre OR et AND conditions pourraient être source de confusion. –

+0

Nice, merci! Je pensais qu'il devrait y avoir un moyen plus facile que juste un tas de cas imbriqués-quand les déclarations! :) –

+0

@Randolph Potter - a du sens pour moi. Je vais juste ajouter des parenthèses autour de la condition ET. –

0

Essayez ceci:

SELECT * 
FROM TableA 
JOIN TableB 
    ON Col1 = Col3 
     OR (Col3 IS NULL AND Col2 = Col4) 
Questions connexes