Oracle Pivot:从行到列

Ami*_* Le 3 sql oracle pivot procedure oracle11g

您好,是否可以将行值转换为列。我正在使用 ORACLE SQL,我想将月份转换为具有 kpi 值的列,如下所示。我尝试了分区和合并语句,但似乎没有任何效果。我真的很感激一些帮助。先感谢您。

输入数据:

部门 关键绩效指标 价值
A 2000年 1 销售量 5000
A 2000年 1 每个客户的收入 120
A 2000年 2 销售量 6000
A 2000年 2 每个客户的收入 140

期望的输出:

部门 关键绩效指标 1 2
A 2000年 销售量 5000 6000
A 2000年 每个客户的收入 120 140

Kaz*_*Nur 5

您可以使用pivot以下方法来执行此操作:

架构和插入语句:

 create table mytable (department varchar(20),year int,month int,kpi varchar(50),value int);

 insert into mytable values('A',    2000,   1,  'sales' ,5000);
 insert into mytable values('A',    2000,   1,  'revenue per client',   120); 
 insert into mytable values('A',    2000,   2,  'sales' ,6000);
 insert into mytable values('A',    2000,   2,  'revenue per client',   140);
Run Code Online (Sandbox Code Playgroud)

询问:

 select * from (
 select department,year,month,kpi,value
 from mytable
 )
 pivot
 (
     max(value)
     for month  in (1,2)
 )
Run Code Online (Sandbox Code Playgroud)

输出:

部门 关键绩效指标 1 2
A 2000年 每个客户的收入 120 140
A 2000年 销售量 5000 6000

db<在这里小提琴