行转列oracle方法
时间: 2023-12-04 07:06:27 浏览: 85
oracle行转列
Oracle中实现行转列的方法有两种,一种是使用PIVOT函数,另一种是使用UNPIVOT函数。其中,PIVOT函数可以将行数据转换为列数据,而UNPIVOT函数则可以将列数据转换为行数据。下面分别介绍这两种方法的使用:
1. 使用PIVOT函数实现行转列
使用PIVOT函数可以将行数据转换为列数据,其语法如下:
SELECT *
FROM (SELECT column1, column2, column3 FROM table_name)
PIVOT (aggregate_function(column2) FOR column1 IN (val1, val2, ..., valn));
其中,column1是需要转换为列的列名,column2是需要进行聚合的列名,aggregate_function是聚合函数,val1, val2, ..., valn是需要转换为列的值。例如,下面的语句将stu表中的course列转换为列数据:
SELECT *
FROM (SELECT name, course FROM stu)
PIVOT (COUNT(*) FOR course IN ('Math', 'English', 'Science'));
2. 使用UNPIVOT函数实现列转行
使用UNPIVOT函数可以将列数据转换为行数据,其语法如下:
SELECT *
FROM (SELECT column1, column2, column3 FROM table_name)
UNPIVOT (value_column FOR column_name IN (column2, column3));
其中,column1是需要保留的列名,column2, column3是需要转换为行的列名,value_column是转换后的值,column_name是转换后的列名。例如,下面的语句将stu表中的Math, English, Science列转换为行数据:
SELECT name, course, score
FROM (SELECT name, Math, English, Science FROM stu)
UNPIVOT (score FOR course IN (Math, English, Science));
阅读全文