MySQLでピボットテーブルの出力を返すにはどうすればよいですか?
P粉926174288
2023-08-23 20:25:28
<p>次のような MySQL テーブルがあるとします: </p>
<pre>company_name アクションのページ数
----------------------------------
A社プリント3
A社プリント2
A社プリント3
会社概要
B社プリント2
B社プリント2
B 社 印刷 1
A社プリント3
</pre>
<p>MySQL クエリを実行して次のような出力を取得することは可能ですか: </p>
<pre>company_name 電子メール 印刷 1 ページ 印刷 2 ページ 印刷 3 ページ
-------------------------------------------------- ----------
A社 0 0 1 3
B 社 1 1 2 0
</pre>
<p><code>pagecount</code> は変化する可能性があるため、各 <code>action</code>/<code>pagecount</code> ごとに出力列数はこれを反映する必要があるという考えです。 1 つの列の場合、各 <code>company_name</code> のクリック数。これがピボットテーブルと呼ばれるかどうかはわかりませんが、誰かがこれを提案しましたか? </p>
私の解決策は、ピボットなしで T-SQL を使用することです:
リーリーこれは基本的にピボット テーブルです。
これを実現する方法に関する優れたチュートリアルは、ここにあります: http:// /www.artfulsoftware.com/infotree/qrytip.php?id=78
この記事を読んで、このソリューションをニーズに合わせて調整することをお勧めします。
更新
上記のリンクが現在利用できなくなったため、ここで mysql ハブの答えを検索している人のために追加情報を提供する必要があると感じました。大量の情報が含まれているため、ここにすべてを掲載することはできません (彼らの膨大な知識を再現したくないだけなので、さらに多くの情報も掲載します) が、一般的にピボットを処理する方法についていくつかアドバイスを提供します。 SQL メソッド テーブルで、最初に質問した peku を例に挙げます。
おそらくリンクはすぐに戻ってくるでしょう。注目してください。
スプレッドシートメソッド...
多くの人は、この目的のために MSExcel、OpenOffice、またはその他のスプレッドシート ツールを単に使用しています。これは有効な解決策です。そこにデータをコピーし、GUI が提供するツールを使用して問題を解決するだけです。
しかし...これは問題ではありません。データをスプレッドシートに取り込む方法やスケーリングなどの問題など、いくつかの欠点が生じる可能性さえあります。
SQL 方法...
彼のフォームが次のようになっているとします:
リーリー次に、必要なフォームを表示します:
リーリー行 (
email
、print x pages
) は条件に似ています。主なグループはcompany_name
ごとにグループ化されます。条件を設定するには、CASE ステートメントを使用する必要があります。何かでグループ化するには...
GROUP BY
を使用します。このピボットを提供する基本的な SQL は次のようになります:
リーリーこれにより、望ましい結果がすぐに得られるはずです。このアプローチの主な欠点は、ピボットテーブルに必要な行が増えるほど、SQL ステートメントで定義する必要がある条件が増えることです。
これも処理できるため、準備されたステートメント、ルーチン、カウンターなどを使用する傾向があります。
このトピックに関する他のリンク: