我有一个PriceComparison表(StoreNumber,ItemNumber,Price),可以保持头对头比较购物的定价数据。目标是为所有商店提供以下内容的记录集:
示例:
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个商店。
答案 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