MySQLでピボットテーブルの出力を返すにはどうすればよいですか?
P粉926174288
P粉926174288 2023-08-23 20:25:28
0
2
369
<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>
P粉926174288
P粉926174288

全員に返信(2)
P粉368878176

私の解決策は、ピボットなしで T-SQL を使用することです:

リーリー
いいねを押す +0
P粉384244473

これは基本的にピボット テーブルです。

これを実現する方法に関する優れたチュートリアルは、ここにあります: http:// /www.artfulsoftware.com/infotree/qrytip.php?id=78

この記事を読んで、このソリューションをニーズに合わせて調整することをお勧めします。

更新

上記のリンクが現在利用できなくなったため、ここで mysql ハブの答えを検索している人のために追加情報を提供する必要があると感じました。大量の情報が含まれているため、ここにすべてを掲載することはできません (彼らの膨大な知識を再現したくないだけなので、さらに多くの情報も掲載します) が、一般的にピボットを処理する方法についていくつかアドバイスを提供します。 SQL メソッド テーブルで、最初に質問した peku を例に挙げます。

おそらくリンクはすぐに戻ってくるでしょう。注目してください。

スプレッドシートメソッド...

多くの人は、この目的のために MSExcel、OpenOffice、またはその他のスプレッドシート ツールを単に使用しています。これは有効な解決策です。そこにデータをコピーし、GUI が提供するツールを使用して問題を解決するだけです。

しかし...これは問題ではありません。データをスプレッドシートに取り込む方法やスケーリングなどの問題など、いくつかの欠点が生じる可能性さえあります。

SQL 方法...

彼のフォームが次のようになっているとします:

リーリー

次に、必要なフォームを表示します:

リーリー

行 (emailprint x pages) は条件に似ています。主なグループは company_name ごとにグループ化されます。

条件を設定するには、CASE ステートメントを使用する必要があります。何かでグループ化するには...GROUP BY を使用します。

このピボットを提供する基本的な SQL は次のようになります:

リーリー

これにより、望ましい結果がすぐに得られるはずです。このアプローチの主な欠点は、ピボットテーブルに必要な行が増えるほど、SQL ステートメントで定義する必要がある条件が増えることです。

これも処理できるため、準備されたステートメント、ルーチン、カウンターなどを使用する傾向があります。

このトピックに関する他のリンク:

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!