0

(StoreNumber、ItemNumber、Price) を使用した PriceComparison テーブルがあり、直接比較するための価格データを保持しています。目標は、すべての店舗の次のものを含むレコードセットです。

  • 店舗番号
  • その店舗で COUNT 対 1 の勝利を収めました
  • その店舗での COUNT 対 1 の損失
  • その店舗の直接対決の数 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 つの価格しかなく、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 に答える