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

MySQL でピボット テーブル出力を実装する方法

<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< ごとに 1 つずつ反映される必要があるという考えです。 ;/code> 列、次に各 <code>company_name</code> のクリック数。これがピボットテーブルと呼ばれるかどうかはわかりませんが、誰かがこれを提案しましたか? </p>
P粉481035232P粉481035232425日前508

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

  • P粉154228483

    P粉1542284832023-08-22 11:20:30

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

    リーリー

    返事
    0
  • P粉366946380

    P粉3669463802023-08-22 00:09:42

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

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

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

    更新

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

    たぶんリンクはすぐに復元されるでしょう、私はそれをたどり続けます。

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

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

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

    SQL 方法...

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

    リーリー

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

    リーリー

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

    条件を設定するには、CASE ステートメントを使用することに似ています。何かでグループ化するには...GROUP BY を使用します。

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

    リーリー

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

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

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

    返事
    0
  • キャンセル返事