以下查詢正確顯示了所有當前/潛在客戶的記錄,無論他/她是否下單。但是,以下SELECT
聲明的別名始終返回1,即使在某些情況下o.OrderID
爲空(即透視客戶尚未下訂單時)也是如此。爲什麼?我認爲下面的CASE聲明是正確的(如this響應所示)。我正在使用SQL Server 2012
。 注意:請記住,雖然OrderID是一個PK,但如果未滿足連接條件,它將始終爲null,並且與OUTER JOIN中的所有其他訂單表列無關。T-SQL CASE子句:指定WHEN NULL與外部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
你確定有'o.OrderId'爲空的情況嗎?還是應該是'c.OrderId'? – DigiFriend
@DigiFriend是的。這就是爲什麼我在'SELECT'中包含'o.OrderID',所以我可以驗證。 – nam
是你在northwind數據庫下執行它嗎?您的查詢是正確的。如果是,那麼它顯示0正確 – Fahmina