如何巧妙運(yùn)用 Oracle 的 unpivot 函數(shù)

小樊
82
2024-09-16 19:40:34
欄目: 云計(jì)算

Oracle 的 UNPIVOT 函數(shù)可以將多個(gè)列轉(zhuǎn)換為多行,這樣更容易進(jìn)行數(shù)據(jù)分析和處理

  1. 創(chuàng)建一個(gè)包含多個(gè)列的表:
CREATE TABLE sales_data (
    product_id NUMBER,
    product_name VARCHAR2(50),
    sales_2020 NUMBER,
    sales_2021 NUMBER
);
  1. 向表中插入一些示例數(shù)據(jù):
INSERT INTO sales_data VALUES (1, 'Product A', 1000, 1200);
INSERT INTO sales_data VALUES (2, 'Product B', 800, 900);
INSERT INTO sales_data VALUES (3, 'Product C', 1500, 1600);
COMMIT;
  1. 使用 UNPIVOT 函數(shù)將銷售數(shù)據(jù)從多列轉(zhuǎn)換為多行:
SELECT *
FROM sales_data
UNPIVOT (
    sales_value FOR sales_year IN (sales_2020 AS '2020', sales_2021 AS '2021')
);

這將返回以下結(jié)果:

PRODUCT_ID PRODUCT_NAME SALES_YEAR SALES_VALUE
---------- ------------ ---------- -----------
         1 Product A     2020       1000
         1 Product A     2021       1200
         2 Product B     2020        800
         2 Product B     2021        900
         3 Product C     2020       1500
         3 Product C     2021       1600

現(xiàn)在,我們已經(jīng)成功地將多列的銷售數(shù)據(jù)轉(zhuǎn)換為多行。接下來(lái),你可以對(duì)這些數(shù)據(jù)進(jìn)行進(jìn)一步的查詢、分析或者報(bào)告。

注意:在實(shí)際應(yīng)用中,你可能需要根據(jù)自己的需求調(diào)整表結(jié)構(gòu)、數(shù)據(jù)和查詢。上面的示例僅用于說(shuō)明如何使用 UNPIVOT 函數(shù)。

0