【问题标题】:How to find what products sell well with others in an SQL Server Query如何在 SQL Server 查询中找到哪些产品畅销与他人
【发布时间】:2012-12-16 02:35:33
【问题描述】:

我有一张销售表

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           |

【问题讨论】:

  • 您真的需要将AAAABBBB 的结果双向显示两次吗?你有另一个包含 productIds 的表吗?如果是这样,该表有多少行,Sales 表中有多少行?
  • 我真的不需要它,但我认为显示会更方便,因为它需要额外的查询来删除重复项?
  • 是的,我还有一个带有产品 ID 的产品“主”表

标签: sql sql-server


【解决方案1】:

我认为应该这样做

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 

【讨论】:

  • 有什么方法可以修改它,这样我就可以计算一个产品的销售额(无论是不是另一个)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 2013-08-15
相关资源
最近更新 更多