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 |
您可以使用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<在这里小提琴
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |