要將Oracle數據庫中的縱向數據轉換為橫向數據,可以使用Oracle的PIVOT操作符。
下面是一個示例,說明如何使用PIVOT操作符將縱向數據轉換為橫向數據。
假設有以下的表結構:
CREATE TABLE sales (
product_id INT,
category VARCHAR2(50),
sales_date DATE,
sales_amount NUMBER
);
表中的數據如下:
INSERT INTO sales VALUES (1, 'Category A', '2021-01-01', 100);
INSERT INTO sales VALUES (2, 'Category B', '2021-01-01', 200);
INSERT INTO sales VALUES (1, 'Category A', '2021-02-01', 150);
INSERT INTO sales VALUES (2, 'Category B', '2021-02-01', 250);
INSERT INTO sales VALUES (1, 'Category A', '2021-03-01', 120);
INSERT INTO sales VALUES (2, 'Category B', '2021-03-01', 180);
要將上述數據轉換為橫向數據,可以使用以下查詢語句:
SELECT *
FROM (
SELECT product_id, sales_date, sales_amount
FROM sales
)
PIVOT (
SUM(sales_amount)
FOR sales_date IN (
TO_DATE('2021-01-01', 'YYYY-MM-DD') AS "2021-01-01",
TO_DATE('2021-02-01', 'YYYY-MM-DD') AS "2021-02-01",
TO_DATE('2021-03-01', 'YYYY-MM-DD') AS "2021-03-01"
)
)
ORDER BY product_id;
結果將如下所示:
PRODUCT_ID 2021-01-01 2021-02-01 2021-03-01
-----------------------------------------------
1 100 150 120
2 200 250 180
以上查詢使用了PIVOT操作符將sales_date列的值轉換為列名,同時計算了每個product_id和sales_date組合的銷售金額的總和。
請注意,PIVOT操作符在Oracle 11g及以上版本中可用。如果使用較舊的版本,可能需要進行其他的處理方法。