ホームページ >データベース >mysql チュートリアル >Oracle SQLのPIVOT演算子を使用して行データを列にピボットする方法
このクエリの目的は、行構成されたデータを列に変換することです。各列は入力行の特定の値を表します。
次の形式を考えてみましょう:
月份 | 数值 |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
4 | 400 |
5 | 500 |
6 | 600 |
私たちの目標は、出力テーブルが次のようになるようにデータをピボットすることです:
一月 | 二月 | 三月 | 四月 | 五月 | 六月 |
---|---|---|---|---|---|
100 | 200 | 300 | 400 | 500 | 600 |
Oracle 11g 以降、PIVOT 演算子はこれを行うための簡単な方法を提供します。
<code class="language-sql">CREATE TABLE tq84_pivot ( month NUMBER, value NUMBER ); INSERT INTO tq84_pivot VALUES(1, 100); INSERT INTO tq84_pivot VALUES(2, 200); INSERT INTO tq84_pivot VALUES(3, 300); INSERT INTO tq84_pivot VALUES(4, 400); INSERT INTO tq84_pivot VALUES(5, 500); INSERT INTO tq84_pivot VALUES(6, 600); -- 插入额外的行以进行演示 INSERT INTO tq84_pivot VALUES(1, 400); INSERT INTO tq84_pivot VALUES(2, 350); INSERT INTO tq84_pivot VALUES(4, 150); SELECT * FROM tq84_pivot PIVOT ( SUM (value) AS sum_value FOR (month) IN (1 AS month_jan, 2 AS month_feb, 3 AS month_mar, 4 AS month_apr, 5 AS month_mai, 6 AS month_jun, 7 AS month_jul, 8 AS month_aug, 9 AS month_sep, 10 AS month_oct, 11 AS month_nov, 12 AS month_dec) );</code>
このクエリは、「FOR」句を持つ PIVOT 演算子を使用して、ピボット列と関連する値を指定します。データを「月」列でグループ化し、SUM() を使用して「値」列を集計すると、各月に対応する値が含まれる目的の出力が得られます。
以上がOracle SQLのPIVOT演算子を使用して行データを列にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。