0

我有一个带有 (StoreNumber, ItemNumber, Price) 的 PriceComparison 表,该表保留了头对头比较购物的定价数据。目标是包含所有商店的以下内容的记录集:

  • 店铺编号
  • 该商店的 COUNT 次正面交锋
  • 该商店的面对面损失计数
  • 该商店的 COUNT 个头对头关系
  • 该商店所有商品定价的总和
  • 该商店以上商品的所有正面竞争者定价的总和

例子:

StoreNumber  ItemNumber  Price
-----------  ----------  -----
101          1           1.39
102          1           1.89
101          2           3.49
103          2           2.99
101          3           9.99
104          3           9.99

我想如果我可以为 CompetitorPrice 添加一个临时列,我可以计算这些 SUM 和 COUNT。这样,该项目列出了两个价格,并且变得容易。

如何在正确的配置中获取此信息?我尝试对同一张表进行 INNER JOIN,但这很棘手。

谢谢!

更新:这适用于 MS SQL Server。更新:每件商品只有两个价格,不超过 2 家商店。

4

1 回答 1

2
SELECT 
    a.storenumber,
    SUM(CASE WHEN a.price < b.price THEN 1 ELSE 0 END) AS wins,
    SUM(CASE WHEN a.price > b.price THEN 1 ELSE 0 END) AS losses,
    SUM(CASE WHEN a.price = b.price THEN 1 ELSE 0 END) AS ties,
    SUM(a.price) AS store_price_sum,
    SUM(b.price) AS competitor_price_sum
FROM
    pricecomparison a
INNER JOIN
    pricecomparison b ON 
        a.itemnumber = b.itemnumber AND 
        a.storenumber <> b.storenumber
GROUP BY
    a.storenumber
于 2012-07-05T03:54:38.907 回答