私は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列目は、少なくとも一つの割引を与えたか販売(および照会)品種の多く言います。
すべての種類のダイナミックなクロス集計生成クエリを試しましたが(はい、私はそれらをすべて見てきました)、私はすべてのことを頭の中で包み込むための十分な精神RAMを持っていません。どのようにこれを最も効率的な方法にアプローチしますか?テンポラリテーブル/ストアドプロシージャなどは大丈夫ですが、アイデアの概要は大歓迎です。ありがとうございました!
この時点で、それはすべての割引ではなく、「製品をカウント(3種類の商品のみで4割引を返します) – Inca
うん。私はデータを処理する方法を見つけたかもしれませんが、これは堅実なアプローチです。しかし、たとえ売り上げがゼロの商品であっても、すべての店舗と商品タイプが中間結果に表示されたかったらどうでしょうか? –