Sql server T-SQL在两个表之间查找缺少的项

Sql server T-SQL在两个表之间查找缺少的项,sql-server,tsql,Sql Server,Tsql,我有一张销售表和一张产品表。样本: Company Product Product Company1 A A Company1 B B Company2 B C D 公司1购买了产品A和B。公司2购买了产品B 我需要一个T-SQL查询,该查询将按公司告诉我他们没有购买哪些产品。最终用户希望联系

我有一张销售表和一张产品表。样本:

Company    Product            Product
Company1   A                  A
Company1   B                  B
Company2   B                  C
                              D 
公司1购买了产品A和B。公司2购买了产品B

我需要一个T-SQL查询,该查询将按公司告诉我他们没有购买哪些产品。最终用户希望联系这些公司,看看他们是否有兴趣购买“缺失”的产品,因此我们需要知道与每个客户讨论哪些产品:

我想为所有公司生成一份报告,因此仅运行查询并提供一个公司ID是不够的。我们需要按公司对结果进行分组:

Company1: C, D   (I don't need comma-delimited list; I'm just listing the values as an example)
Company2: A, C, D

以下简单的方法可以让您了解有问题的产品:

select distinct s.company, p.product
from sales s
outer apply (
    select product
    from products
    where product not in (select product from sales s2 where s2.company=s.company)
)p

谢谢,这工作做得很好。