我正在尝试获取所有未在前一年下订单的客户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的回答/ –