如何在SQL Server查询中找到哪些产品与其他产品销售良好

如何在SQL Server查询中找到哪些产品与其他产品销售良好,sql,sql-server,Sql,Sql Server,我有一张销售表 SALE_ID | Product_Code | Qty | Sales_Value | Taxes .... ==========+===================+========+===============+========= 001 | AAAA | 1 | 1000 | 50 .... 001 | BBBB | 1

我有一张销售表

SALE_ID   |   Product_Code    |  Qty   |  Sales_Value  | Taxes ....
==========+===================+========+===============+=========
001       |   AAAA            |   1    |  1000         | 50     ....
001       |   BBBB            |   1    |  10           | 0.5
002       |   CCCC            |   1    |  30           | 1.5
002       |   AAAA            |   1    |  1000         | 1.5
我试图得到一个表格,显示在同一张发票上,一个产品与另一个具有相同销售id的产品一起销售的次数

Product ID  |  Product ID 2   |  Sales Together
============+=================+==================
AAAA        |  BBBB           |      1
AAAA        |  CCCC           |      1
BBBB        |  AAAA           |      1
BBBB        |  CCCC           |      0
CCCC        |  AAAA           |      1
CCCC        |  BBBB           |      0
我使用的是MS SQL,我想我必须做一个分组查询,在那里我按销售额分组,然后是产品Id,但这就是我对如何交叉计算销售额感到困惑的地方

如果方便的话,我还有一张产品大师的表格

Product_ID   |  Description    |
=============+=================|
AAAA         | Battery         |
BBBB         | Flashlight      |
CCCC         | Radio           |

我想这个应该可以

SELECT P1.Product_Code,
       P2.Product_Code,
       Count(DISTINCT S1.SALE_ID)
FROM   Product P1
       JOIN Product P2
         ON P1.Product_Code > P2.Product_Code
       LEFT JOIN Sales S1
                 INNER JOIN Sales S2
                   ON S1.SALE_ID = S2.SALE_ID
         ON S1.Product_Code = P1.Product_Code
            AND S2.Product_Code = P2.Product_Code
GROUP  BY P1.Product_Code,
          P2.Product_Code 

我想这个应该可以

SELECT P1.Product_Code,
       P2.Product_Code,
       Count(DISTINCT S1.SALE_ID)
FROM   Product P1
       JOIN Product P2
         ON P1.Product_Code > P2.Product_Code
       LEFT JOIN Sales S1
                 INNER JOIN Sales S2
                   ON S1.SALE_ID = S2.SALE_ID
         ON S1.Product_Code = P1.Product_Code
            AND S2.Product_Code = P2.Product_Code
GROUP  BY P1.Product_Code,
          P2.Product_Code 

你真的需要AAAA和BBBB的结果两轮显示两次吗?是否有另一个包含ProductID的表?如果是这样的话,它有多少行?销售表中有多少行?我真的不需要它,但我认为显示它会更方便,因为它需要额外的查询来删除重复项?是的,我还有一个带有产品ID的产品主控表。您真的需要AAAA和BBBB的结果同时显示两次吗绕道而行?是否有另一个包含ProductID的表?如果是这样的话,它有多少行?销售表中有多少行?我真的不需要它,但我认为它会更方便显示,因为它需要一个额外的查询来删除重复项?是的,我还有一个带有产品ID的产品主表。有没有办法修改它,以便我可以计算出有多少销售是否有一种方法可以修改它,这样我就可以计算出一种产品的销售量,无论它是否与另一种产品的销售量?