SQL连接用case

时间:2013-06-26 07:57:57

标签: sql sql-server sql-server-2005

如何使用case子句修改join子句;例如,如果column1为null,我希望表连接另一列,例如:

SELECT * FROM MYTABLE 
LEFT JOIN OTHERTABLE ON 
CASE WHEN MYTABLE.A IS NULL THEN MYTABLE.B = OTHERTABLE.A
ELSE MYTABLE.A IS NOT NULL THEN MYTABLE.A = OTHERTABLE.A

(完全是这样,抱歉语法错误:))

4 个答案:

答案 0 :(得分:4)

试试这个:

SELECT * 
FROM MyTable M
LEFT JOIN OtherTable O ON(CASE WHEN M.A IS NULL THEN M.B ELSE M.A END) = O.A

答案 1 :(得分:1)

SELECT * FROM MYTABLE 
LEFT JOIN OTHERTABLE ON COALESCE(MYTABLE.A, MYTABLE.B) = OTHERTABLE.A

答案 2 :(得分:1)

试试以下代码:

SELECT * FROM MYTABLE 
LEFT JOIN OTHERTABLE ON OTHERTABLE.A = isnull(MYTABLE.A,MYTABLE.B) 

答案 3 :(得分:0)

您可以使用isnull()或coalesce()来检查空值。