我正在嘗試獲取所有未在前一年下訂單的客戶ID。我解決這個問題的邏輯就是做一個像下面這樣的自我留下的約翰。使用SQL Server中的自加入獲取新客戶ID
SELECT distinct t1.[CustomerID]
FROM [AdventureWorks2008].[Sales].[SalesOrderHeader] t1
LEFT JOIN [AdventureWorks2008].[Sales].[SalesOrderHeader] t2
on t1.CustomerID = t2.CustomerID
Where
t1.OrderDate >= '20040101'
and t2.OrderDate > '20030101'
and t2.OrderDate <= '20031231'
and t2.customerID is null
但它返回一個空集。 我在這裏錯過了什麼?
當你使用一張左表加入到哪裏的條件時,你正在有效地將左連接變成內部。將t2.OrderDate條件從WHERE移動到JOIN,就像在Tim Biegeleisen的回答中一樣,或者像在fen1x的回答/ –