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