検索

ホームページ  >  に質問  >  本文

MySQL でピボット テーブルの出力を生成するにはどうすればよいですか?

次のような MySQL テーブルがあるとします。 <pre>company_name アクションのページ数 ---------------------------------- A社プリント3 A社プリント2 A社プリント3 会社概要 B社プリント2 B社プリント2 B 社 印刷 1 A社プリント3 </pre> MySQL クエリを実行して次のような出力を取得することは可能ですか: <pre>company_name 電子メール 印刷 1 ページ 印刷 2 ページ 印刷 3 ページ -------------------------------------------------- ---------- A社 0 0 1 3 B 社 1 1 2 0 </pre> <code>pagecount</code> は変更される可能性があるため、出力の列数はこれを反映し、<code>action</code>/<code>pagecount</code> ごとに 1 列になるという考えです。 ; をクリックし、各 <code>company_name</code> のヒット数をカウントします。これをピボットテーブルと呼ぶかどうかはわかりませんが、誰かがこれを提案しました
P粉180844619P粉180844619469日前468

全員に返信(2)返信します

  • P粉696891871

    P粉6968918712023-08-23 00:33:40

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

    リーリー

    返事
    0
  • P粉608647033

    P粉6086470332023-08-23 00:17:57

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

    これを実装する方法に関する詳細なチュートリアルは、次の場所にあります: http://www.artfulsoftware.com/infotree/qrytip.php?id=78

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

    更新

    上記のリンクは現在利用できなくなっているため、ここで mysql ピボット テーブルの答えを探している人のために追加情報を提供する義務があると感じています。そこには大量の情報が含まれているので、ここですべてをコピーするつもりはありません (言うまでもなく、彼らの膨大な知識をコピーしたくありません)。ただし、SQL を使用してピボット テーブルを操作する方法についていくつかアドバイスします。質問したペクの例。

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

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

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

    しかし...これは問題の核心ではなく、データをスプレッドシートにインポートする方法やスケーラビリティの問題など、いくつかの欠点につながる可能性さえあります。

    SQL 方法...

    彼のテーブルが次のようになっていると仮定します:

    リーリー

    次に、彼/彼女が期待するテーブルを見てください:

    リーリー

    行 (EMAILPRINT x ページ) は条件を表します。主なグループは company_name ごとにグループ化されます。

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

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

    リーリー

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

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

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

    返事
    0
  • キャンセル返事