admin

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

sql

后续查询可以正确显示所有当前/潜在客户的记录,而不管他/她是否下了订单。但是,即使在某些情况下为空(即,透视客户尚未下订单时)YesNO,以下SELECT语句的别名也始终返回1o.OrderID。为什么?我认为下面的CASE语句是正确的(。我正在使用SQL Server 2012注意 :请记住,尽管OrderID是PK,但如果不满足联接条件,则它将与OUTER
JOIN中的orders表的所有其他列一起始终为null。

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

阅读 313

收藏
2021-07-01

共1个答案

admin

尝试使用ISNULL

我非常确定,原因是因为当您将IS NULL与NULL比较时,结果为NULL,因此为False,因此为什么要对ELSE 1求值

SELECT c.customerID, o.OrderID, CASE When ISNULL(o.OrderID, 0) = 0 Then 0 Else 
1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
 ON c.customerID = o.customerID
2021-07-01