Oracle PIVOT 函数是一种将行数据转换为列数据的方法,它可以让你在查询中动态地创建聚合表
基本语法:
SELECT *
FROM (
SELECT column1, column2, column3
FROM table_name
)
PIVOT (
aggregate_function(column3)
FOR column2 IN (value1, value2, ..., valueN)
);
其中:
column1
:用于分组的列。column2
:要转换为列的列。column3
:要聚合的列。table_name
:要查询的表名。aggregate_function
:聚合函数,如 COUNT、SUM、AVG 等。value1, value2, ..., valueN
:column2
中的值,这些值将转换为新的列。使用场景:
示例: 假设我们有一个名为 sales_data 的表,其中包含以下列:employee_id、department 和 salary。我们想要计算每个部门的平均工资,并将结果显示为一个包含部门和平均工资的表。我们可以使用以下查询:
SELECT *
FROM (
SELECT department, salary
FROM sales_data
)
PIVOT (
AVG(salary)
FOR department IN ('Sales', 'Marketing', 'IT')
);
这将返回一个包含 Sales、Marketing 和 IT 部门的平均工资的表。