首頁 >資料庫 >mysql教程 >如何使用 Oracle SQL 的 PIVOT 運算子將行資料轉換為列?

如何使用 Oracle SQL 的 PIVOT 運算子將行資料轉換為列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-23 07:41:10308瀏覽

How to Pivot Row Data into Columns Using Oracle SQL's PIVOT Operator?

Oracle SQL 透視查詢

本查詢的目標是將按行組織的資料轉換為列,其中每一列代表輸入行中的特定值。

考慮以下表格:

月份 数值
1 100
2 200
3 300
4 400
5 500
6 600

我們的目標是將資料透視,以便輸出表如下所示:

一月 二月 三月 四月 五月 六月
100 200 300 400 500 600

Oracle 11g 以上版本

從 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 運算子來指定透視列和關聯值。透過按 'month' 列分組資料並使用 SUM() 聚合 'value' 列,我們獲得了所需的輸出,其中每個月份都有其對應的值。

以上是如何使用 Oracle SQL 的 PIVOT 運算子將行資料轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn