oracle行转列(oracle中几种常用的行转列方法)
发布网友
发布时间:2天前
我来回答
共1个回答
热心网友
时间:2天前
在报表开发中,常需解决行转列问题。以Oracle中scott的emp表为例,统计各职位人员在各部门的人数分布情况,通过行转列操作实现。原始数据为scott的emp表。行转列后数据如下,展示各职位人员在各部门的分布人数。
方法一:经典实现方式,利用decode函数、聚合函数(如max、sum等)与group by分组。SQL语句如下:
select t.job, count(decode(t.deptno, '10', 1)) as "10(DEPTNO)",
count(decode(t.deptno, '20', 1)) as "20(DEPTNO)",
count(decode(t.deptno, '30', 1)) as "30(DEPTNO)",
count(decode(t.deptno, '40', 1)) as "40(DEPTNO)"
from scott.emp t
group by t.job;
方法二:Oracle 11g后引入PIVOT功能,简化行转列操作。但需确认数据库环境大于11g,并检查生产环境数据库版本,避免项目后期问题。SQL语句如下:
with tmp_tab as(
select t.job, t.deptno
from scott.emp t
)
select * from tmp_tab t pivot(count(1) for deptno in (10, 20, 30, 40));