T-SQL CASE子句:使用外部JOIN指定WHEN NULL的问题

时间:2017-05-02 17:03:06

标签: sql tsql sql-server-2012

以下查询正确显示所有当前/潜在客户的记录,无论他/她是否下订单。但是,下面的YesNO语句的SELECT别名总是返回1,即使在某些情况下o.OrderID为空(即,当透视客户尚未下订单时)。为什么?我认为下面的CASE声明是正确的(如this响应中所示)。我正在使用SQL Server 2012注意:请注意,虽然OrderID是PK,但如果不符合连接条件,它将始终为OUTER JOIN中所有其他订单列的列。

SELECT c.customerID, o.OrderID, CASE When o.OrderID is NULL Then 0 Else 1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
 ON c.customerID = o.customerID

1 个答案:

答案 0 :(得分:0)

尝试使用ISNULL

我很确定原因是因为当你将IS NULL与NULL进行比较时结果为NULL,因此为False,因此它为什么要评估你的ELSE 1

android_library