如果内部联接中有Else Statement

时间:2011-06-22 17:17:38

标签: sql

我有一个表作业,其StartDate列通常为null。如果它不为null,那么这就是我想要与表格四分之一的内部联接,否则我想在其他条件下进行内部联接。这就是我想要的:

INNER JOIN Quarters q
ON  (IF j.StartDate IS NOT NULL (j. StartDate BETWEEN GETDATE() and q.EndDate)
     ELSE **Some other condition**)

运行此错误时出现的错误是关键字“IF”附近的语法不正确

有没有人知道这个的正确语法?

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:9)

INNER JOIN Quarters q ON
    (j.StartDate IS NOT NULL AND j. StartDate BETWEEN GETDATE() and q.EndDate)
OR
    (j.StartDate IS NULL AND **Some other condition**)

答案 1 :(得分:1)

尝试

当j.StartDate为空时的情况,那么某些值ELSE some_other_value结束

语法是

CASE WHEN some_boolean_expression THEN some_value_column_or_expression
   WHEN some_boolean_expression THEN some_value_column_or_expression
... (repeat when as many times you need it)
   ELSE some_value_column_or_expression
END

注意:可以省略其他。

另见链接

http://www.craigsmullins.com/ssu_0899.htm

http://msdn.microsoft.com/en-us/library/ms181765.aspx

答案 2 :(得分:1)

处理此问题的最简单方法就是将其视为逻辑操作:

ON    (j.StartDate IS NOT NULL 
       and j. StartDate BETWEEN GETDATE() and q.EndDate)
   OR (some other condition)