2009-11-16 52 views
0

我有两个表:如何编写这个T-SQL WHERE条件?

TableA 
    Col1 
    Col2 
TableB 
    Col3 
    Col4 

我想它们连接在一起:现在

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

,代替...我需要编写中的一个表达式:

  1. 如果Col3不为空,则返回true iif Col1 == Col3;否则
  2. 如果COL3为空,那么真正的IIF col2的== COL4

什么是最优雅的方式来做到这一点?

回答

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

应该做的伎俩(如果COL3为null中,col1 = COL3不能evalutate为TRUE)

+0

你或和与条件可能会造成混乱。 – 2009-11-16 13:40:05

+0

不错,谢谢!我认为应该有一种更简单的方法,而不仅仅是一堆深度嵌套的case-when语句! :) – 2009-11-16 13:41:52

+0

@Randolph波特 - 对我有意义。我只是在AND条件中添加括号。 – 2009-11-16 13:42:29

0

试试这个:

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