SQL-使用表行计算SUM / COUNT

时间:2012-07-05 02:51:49

标签: sql

我有一个PriceComparison表(StoreNumber,ItemNumber,Price),可以保持头对头比较购物的定价数据。目标是为所有商店提供以下内容的记录集:

  • StoreNumber
  • 该商店的头对头胜利
  • 该商店的头对头损失
  • 该商店的头对头联系
  • 该商店所有商品定价的总和
  • 该商店上述商品的所有直接竞争对手定价的总和

示例:

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个商店。

1 个答案:

答案 0 :(得分: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