SQL Query用于比较两个查询中的两个子集

时间:2013-09-16 21:23:11

标签: sql sql-server

我需要将728类型的所有订单与每个客户的所有其他订单类型进行比较,以找到订单类型728具有至少一种其他订单类型中的任何项目的任何客户,或者如果任何其他订单类型订单类型具有该客户不在订单类型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

我已查询,以便我有一个728订单类型的表变量(包含客户和订单类型数据),@ Items_728

我已经查询过,除了728(包含客户和订单类型数据),我有一个包含所有订单类型的表变量,@ Items_Not728

我想获得每个客户的所有728个订单类型的结果集,这些订单类型的项目不属于该客户的其他订单类型。

示例:OrderType 728在至少一个其他OrderType中找不到项目特殊

我想获得每个客户的所有订单类型的结果集,这些订单类型的项目不在728订单类型中。

示例:OrderType 999没有项目自定义

我希望将此作为基于集合的操作,而不是创建游标并按客户行走,手动比较订单组,注意任何差异并保存每个客户编号。这看起来非常低效和肮脏。

我查看了其他StackOverflow问题,但没有注意到任何看起来像这样的东西。任何有用的建议都将非常感谢。

1 个答案:

答案 0 :(得分:0)

结果集#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

第二个必需的结果集&例子不同意,所以没有完成。

相关问题