我只需要选择所有订单都为“NOT OrderDate IS NULL”的客户。我开始于
SELECT Customers.Id, Customers.LastName
FROM Customers, Orders
WHERE Customers.Id = Orders.CustomerId AND NOT Orders.OrderDate IS NULL AND ...
并希望通过“FOR ALL”进一步构建,但失败了。
我尝试了答案中给出的建议,但没有给出正确的结果。
这是我使用两个临时表的解决方法,如下所示:
DECLARE @TableA TABLE (
Id int,
CountA int
)
DECLARE @TableB TABLE (
Id int,
CountB int
)
INSERT INTO @TableA (Id, CountA)
SELECT Customers.Id, COUNT(Orders.Id)
FROM Customers INNER JOIN
Orders ON Customers.Id = Orders.CustomerId
GROUP BY Customers.ID
INSERT INTO @TableB (Id, CountB)
SELECT Customers.Id, COUNT(Orders.Id)
FROM Customers INNER JOIN
Orders ON Customers.Id = Orders.CustomerId
WHERE (NOT Orders.OrderDate IS NULL)
GROUP BY Customers.ID
Select tA.Id
FROM @TableA tA INNER JOIN @TableB tB on tA.Id = tB.Id
WHERE tA.CountA = tB.CountB
两个临时表的不同之处仅在于,第一个临时表选择订单中没有条件的组计数,第二个临时表选择有条件的组计数。然后连接 CountA = CountB 的两个临时表,仅给出所有相关订单都满足条件的客户。
如果有人找到更优雅的方式,请告诉我。
最佳答案
Any suggestions how to tackle this?
在这种情况下,您需要考虑不要查找所有相关记录都满足条件的记录。
相反,考虑查找不存在违反条件的相关记录的所有记录。
关于sql - 仅选择所有链接记录都满足条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50337840/