ホームページ > データベース > mysql チュートリアル > mysqlでテーブルをピボットする方法:行を列に変換しますか?

mysqlでテーブルをピボットする方法:行を列に変換しますか?

Patricia Arquette
リリース: 2025-01-25 11:26:10
オリジナル
639 人が閲覧しました

How to Pivot a Table in MySQL: Transforming Rows into Columns?

テーブルを変換線に列に変換します

質問:

3列のあるテーブルをデータパースペクティブテーブルに変換し、行が列に変わります。

例:

入力テーブル:

必要な出力(データのパースペクティブテーブル):

hostid itemname itemvalue
1 A 10
1 B 3
2 A 9
2 C 40
解決策:

hostid A B C
1 10 3 0
2 9 0 40
MySQLのデータパースペクティブ関数には、3つのステッププロセスが含まれます。

興味のある列を選択:

  1. 追加の列拡張がある基本テーブル:
各一意のitemnameに対応する列を追加します。
<code class="language-sql">SELECT hostid, itemname, itemvalue
FROM history;</code>
ログイン後にコピー
  1. 拡張テーブルのグループ化と集約:

HOSIDでのグループ化と各列の値の合計。

<code class="language-sql">CREATE VIEW history_extended AS (
  SELECT
    history.*,
    CASE WHEN itemname = "A" THEN itemvalue END AS A,
    CASE WHEN itemname = "B" THEN itemvalue END AS B,
    CASE WHEN itemname = "C" THEN itemvalue END AS C
  FROM history
);</code>
ログイン後にコピー
  1. オプション:集約テーブルを美化する(null値を0に置き換える)
  2. メモと制限:

<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS (
  SELECT
    hostid,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C
  FROM history_extended
  GROUP BY hostid
);</code>
ログイン後にコピー
このソリューションは、データパースペクティブ列に特定の値があることを前提としています(ここにはitemvalueです)。
  1. 複数のY値をサポートしますが、データパースペクティブ列を手動で追加することに限定されています。 テーブルを見るデータを生成するために多数のデータを使用するのは困難な場合があります。

以上がmysqlでテーブルをピボットする方法:行を列に変換しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート