比较两个查询中的两个子集的SQL查询
我需要将728类型的所有订单与每个客户的所有其他订单类型进行比较,以找到订单类型728中有任何项目不在至少一个其他订单类型中的任何客户,或者如果任何其他订单类型中有任何项目不在该客户的订单类型728中比较两个查询中的两个子集的SQL查询,sql,sql-server,Sql,Sql Server,我需要将728类型的所有订单与每个客户的所有其他订单类型进行比较,以找到订单类型728中有任何项目不在至少一个其他订单类型中的任何客户,或者如果任何其他订单类型中有任何项目不在该客户的订单类型728中 Customers OrderTypes Items Customer 2245 OrderType 728 Item PT Item Custom I
Customers
OrderTypes
Items
Customer 2245
OrderType 728
Item PT
Item Custom
Item Special
OrderType 234
Item PT
Item Custom
OrderType 300
Item PT
Item Custom
OrderType 999
Item PT
我进行了查询,因此我有一个订单类型为728的表变量(带有客户和订单类型数据),@Items_728
我已经查询过了,所以我有一个表变量,它包含除728之外的所有订单类型(带有客户和订单类型数据),@Items\u Not728
我想获得每个客户的所有728个订单类型的结果集,这些订单类型中的项目不属于该客户的其他订单类型
Customers
OrderTypes
Items
Customer 2245
OrderType 728
Item PT
Item Custom
Item Special
OrderType 234
Item PT
Item Custom
OrderType 300
Item PT
Item Custom
OrderType 999
Item PT
示例:OrderType 728的特殊项在至少一个其他OrderType中找不到
我想获得每个客户的所有订单类型的结果集,这些客户的项目不属于728订单类型
示例:OrderType 999没有自定义项
我希望将此作为一个基于集合的操作来完成,而不是创建一个光标并逐个客户地遍历,手动比较订单集合,注意任何差异并保存每个客户编号。这看起来效率极低,而且肮脏不堪
我看过其他的StackOverflow问题,但没有注意到任何看起来像这样的问题。如果您有任何有用的建议,我们将不胜感激。结果集#1:728s,不在其他订单类型中的项目:
SELECT i.Cust, i.Item
FROM @Items_728 i
WHERE NOT EXISTS (SELECT 1 FROM @Items_Not728 WHERE Cust = i.Cust AND Item = i.Item)
ORDER BY 1, 2
第二个要求的结果集和示例不一致,所以未完成。您的第二个示例(999没有自定义)在描述方面似乎没有意义。请你澄清一下好吗。