Tsql 如何编写此T-SQL WHERE条件?

Tsql 如何编写此T-SQL WHERE条件?,tsql,Tsql,我有两张桌子: TableA Col1 Col2 TableB Col3 Col4 我想把他们联系在一起: SELECT * from TableA join TableB ON (...) 现在,我需要编写一个计算结果为: 如果Col3不为null,则为true iif Col1==Col3;否则 如果Col3为null,则为true iif Col2==Col4 最优雅的方式是什么 ON (Col1=Col3 OR (Col3 IS NULL AND Co

我有两张桌子:

TableA
    Col1
    Col2
TableB
    Col3
    Col4
我想把他们联系在一起:

SELECT * from TableA join TableB ON (...)
现在,我需要编写一个计算结果为:

  • 如果Col3不为null,则为true iif Col1==Col3;否则
  • 如果Col3为null,则为true iif Col2==Col4
  • 最优雅的方式是什么

    ON (Col1=Col3 OR (Col3 IS NULL AND Col2=Col4))
    
    应该这样做(如果Col3为null,则Col1=Col3无法将evalutate转换为TRUE)

    应该这样做(如果Col3为null,Col1=Col3不能求值为TRUE)

    尝试以下方法:

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

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

    您的OR和条件可能会混淆。很好,谢谢!我认为应该有一种更简单的方法,而不仅仅是一堆嵌套很深的case-when语句!:)@伦道夫·波特——对我来说很有意义。我会在和的周围加上括号。兰多夫:在或之前。。。对一些人来说,这就像以前一样清楚;其他人更喜欢用括号来表示清楚。老实说,我永远记不清哪一个先到,但这个解决方案背后的想法非常清楚,因此没有必要澄清。:)您的OR和条件可能会混淆。很好,谢谢!我认为应该有一种更简单的方法,而不仅仅是一堆嵌套很深的case-when语句!:)@伦道夫·波特——对我来说很有意义。我会在和的周围加上括号。兰多夫:在或之前。。。对一些人来说,这就像以前一样清楚;其他人更喜欢用括号来表示清楚。老实说,我永远记不清哪一个先到,但这个解决方案背后的想法非常清楚,因此没有必要澄清。:)