在Oracle中,可以使用PIVOT
操作將多行數據轉換為單列的多個值
假設有一個名為sales_data
的表,其結構如下:
CREATE TABLE sales_data (
product_id NUMBER,
month VARCHAR2(10),
sales_amount NUMBER
);
插入一些示例數據:
INSERT INTO sales_data VALUES (1, 'January', 100);
INSERT INTO sales_data VALUES (1, 'February', 200);
INSERT INTO sales_data VALUES (2, 'January', 150);
INSERT INTO sales_data VALUES (2, 'February', 250);
要將這些數據轉換為每個產品ID對應一行,每個月對應一列的格式,可以使用以下查詢:
SELECT * FROM (
SELECT product_id, month, sales_amount
FROM sales_data
)
PIVOT (
SUM(sales_amount)
FOR month IN ('January' AS january, 'February' AS february)
);
查詢結果如下:
PRODUCT_ID JANUARY FEBRUARY
---------- -------- --------
1 100 200
2 150 250
在這個例子中,我們首先從sales_data
表中選擇product_id
、month
和sales_amount
列。然后,我們使用PIVOT
操作將month
列的值轉換為列名,并對sales_amount
列求和。最后,我們使用FOR
子句指定要轉換的月份。