Oracle PIVOT 函數(shù)是一種將行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù)的方法,它可以讓你在查詢中動(dòng)態(tài)地創(chuàng)建聚合表
以下是一個(gè)使用 PIVOT 函數(shù)和其他函數(shù)組合的示例:
WITH sales_data AS (
SELECT 'A' AS product, 'Q1' AS quarter, 100 AS sales FROM DUAL UNION ALL
SELECT 'A' AS product, 'Q2' AS quarter, 200 AS sales FROM DUAL UNION ALL
SELECT 'B' AS product, 'Q1' AS quarter, 300 AS sales FROM DUAL UNION ALL
SELECT 'B' AS product, 'Q2' AS quarter, 400 AS sales FROM DUAL
)
SELECT *
FROM (
SELECT product, quarter, sales
FROM sales_data
)
PIVOT (
SUM(sales) AS total_sales
FOR quarter IN ('Q1', 'Q2')
);
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)名為 sales_data
的臨時(shí)表,其中包含產(chǎn)品、季度和銷售額。然后,我們使用 PIVOT 函數(shù)對這些數(shù)據(jù)進(jìn)行轉(zhuǎn)換,計(jì)算每個(gè)產(chǎn)品在每個(gè)季度的總銷售額。
除了 PIVOT 函數(shù)之外,我們還可以使用其他函數(shù)來處理這些數(shù)據(jù)。例如,我們可以使用 GROUP BY 函數(shù)對結(jié)果進(jìn)行分組,或者使用 ORDER BY 函數(shù)對結(jié)果進(jìn)行排序。以下是一個(gè)使用 GROUP BY 和 ORDER BY 函數(shù)的示例:
WITH sales_data AS (
SELECT 'A' AS product, 'Q1' AS quarter, 100 AS sales FROM DUAL UNION ALL
SELECT 'A' AS product, 'Q2' AS quarter, 200 AS sales FROM DUAL UNION ALL
SELECT 'B' AS product, 'Q1' AS quarter, 300 AS sales FROM DUAL UNION ALL
SELECT 'B' AS product, 'Q2' AS quarter, 400 AS sales FROM DUAL
)
SELECT product, SUM('Q1'_total_sales) AS q1_sales, SUM('Q2'_total_sales) AS q2_sales
FROM (
SELECT product, quarter, sales
FROM sales_data
)
PIVOT (
SUM(sales) AS total_sales
FOR quarter IN ('Q1', 'Q2')
)
GROUP BY product
ORDER BY product;
在這個(gè)示例中,我們首先使用 PIVOT 函數(shù)將銷售數(shù)據(jù)轉(zhuǎn)換為每個(gè)產(chǎn)品在每個(gè)季度的總銷售額。然后,我們使用 GROUP BY 函數(shù)對產(chǎn)品進(jìn)行分組,并使用 ORDER BY 函數(shù)對結(jié)果進(jìn)行排序。最后,我們使用 SUM 函數(shù)計(jì)算每個(gè)產(chǎn)品在每個(gè)季度的總銷售額。