皆様、
MySQL 5.1 で次の問題が発生しました。これが私のテーブルです。
Sale | Store | Product | Discount
---------------------------------
1 | 1 | B | Yes
2 | 1 | B | Yes
3 | 1 | B | No
4 | 1 | D | Yes
5 | 1 | A | No
6 | 2 | A | No
7 | 3 | B | No
8 | 3 | B | No
9 | 1 | D | Yes
10 | 2 | A | No
もちろん、これはデータを整理するための非常に不便な方法ですが、データがたまたま入ってきた方法です (そして、これからも入ってきます)。
製品タイプの完全に任意のリスト (必要に応じてカンマ区切り) を投げることができる必要があります。としましょうA,B,C
。最後に、どの店が何を売ったかのリストが必要です。わかりやすくするために、中間結果を次に示します。
Store | Product | Sales | Discounts
-----------------------------------
1 | A | 1 | 0
1 | B | 3 | 2
1 | C | 0 | 0
2 | A | 2 | 0
2 | B | 0 | 0
2 | C | 0 | 0
3 | A | 0 | 0
3 | B | 2 | 0
3 | C | 0 | 0
最後に、私が必要とするのはこれです:
Store | Product types sold | Discounts given on product types:
-------------------------------------------------------------
1 | 2 | 1
2 | 1 | 0
3 | 1 | 0
3 番目の列は、販売された (および照会された) 製品タイプのうち、少なくとも 1 つの割引が与えられた数を示しています。
私はあらゆる種類の動的なクロス集計を生成するクエリを試しました (はい、すべてを見てきました) が、一度にすべてを頭に入れるのに十分な精神的 RAM がありません。これに最も効率的な方法でどのようにアプローチしますか? 一時テーブル/ストアド プロシージャなどは問題ありません。アイデアの大まかな概要は大歓迎です。ありがとうございました!