MySQL 列データを行形式 (ピボット テーブル) に変換します
この記事では、複数列データを含む MySQL テーブルを行および列形式のデータに変換する方法について説明します。結果として得られる構造はピボット テーブルと呼ばれ、データの簡潔かつ包括的なビューを提供します。
問題ステートメント:
複数の列を持つテーブルがあり、各列はデータ カテゴリを表します。目標は、行がカテゴリ (col1、col2、col3、col4) を表し、列が月を表すピボット テーブル形式に変換することです ( 1月、2月)。
ソリューションフレームワーク:
MySQL でこの変換を実装するには、次の 2 段階のプロセスに従う必要があります:
アンチパースペクティブ (UNION ALL):
視点 (集計と CASE):
実装されたクエリ:
アンチパースペクティブ (UNION ALL):
<code class="language-sql">SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable;</code>
視点 (集計と CASE):
<code class="language-sql">SELECT descrip, MAX(CASE WHEN month = 'Jan' THEN value ELSE 0 END) AS Jan, MAX(CASE WHEN month = 'Feb' THEN value ELSE 0 END) AS Feb FROM ( SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable ) AS source GROUP BY descrip;</code>
結果:
このクエリは、入力テーブルをピボット テーブル形式に変換します:
DESCRIP | Jan | Feb |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | 0 | G |
col4 | B | E |
以上がMySQL 列データを行ベースのピボット テーブルに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。