P粉5742689892023-07-26 00:37:24
これは基本的にピボット テーブルです。
これを実装する方法に関する詳細なチュートリアルは、次の場所にあります: http://www.artfulsoftware.com/infotree/qrytip.php?id=78
この記事を読むことをお勧めします。自分のニーズに合わせて調整してください。
UPDATE
上記のリンクは現在利用できなくなっているため、MySQL ピボット テーブルの答えを探している人のために追加情報をここで提供する必要があると感じました。このリンクには本当に多くの情報が含まれています。すべてをコピーするつもりはありません (そして、彼らの豊富な知識をコピーするつもりはありません)。ただし、SQL でピボット テーブルを操作する方法についていくつかのアドバイスを提供します。 peku 提起された質問を例に考えてみましょう。
もしかしたらリンクはすぐに復活するかもしれないので、注目してみます。
スプレッドシートの方法...
多くの人は、MSExcel、OpenOffice、またはその他のスプレッドシート ツールなどのツールを使用して、このタスクを実行します。これは有効な解決策です。そこにデータをコピーし、GUI が提供するツールを使用して問題を解決するだけです。
しかし...これは問題の核心ではなく、データをスプレッドシートにインポートする方法やスケーラビリティの問題など、いくつかの欠点につながる可能性さえあります。
SQL の方法...
テーブルが次のようになっているとします:
次に、予想されるテーブルを見てください:
リーリー行 (電子メール、x ページを印刷) は条件に似ています。主なグループ分けは会社名によって行われます。
条件を設定するには、CASE ステートメントを使用するのが適しています。何かでグループ化するには、GROUP BY を使用できます。
このピボット テーブルを提供する基本的な SQL ステートメントは次のようになります:
これにより、望ましい結果がすぐに得られるはずです。このアプローチの主な欠点は、ピボット テーブルに必要な行が増えるほど、SQL ステートメントで定義する必要がある条件が増えることです。
この問題も解決できるため、準備されたステートメント、ルーチン、カウンターなどを使用する傾向があります。
このトピックに関する追加リンクは次のとおりです: