sql将行转换为列

u4vypkhs  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(344)

有可能把行值转换成列。我使用的是oraclesql,我希望将月份转换为具有kpi值的列,如下所示。我尝试了分区和合并语句,但似乎没有任何效果。我非常感谢你的帮助。先谢谢你。
输入数据:
部门年度月HKPIVALUEA2000销售额5000A2000每位客户收入120A20002销售额6000A20002每位客户收入140
期望输出:
部门年度KPI12A2000销售额50006000A2000每客户收入120140

sgtfey8w

sgtfey8w1#

你可以用 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);

查询:

select * from (
 select department,year,month,kpi,value
 from mytable
 )
 pivot
 (
     max(value)
     for month  in (1,2)
 )

输出:
部门年度KPI12A2000每客户收入120140A2000销售额50006000
db<在这里摆弄

jk9hmnmh

jk9hmnmh2#

可以使用条件聚集:

select department, year, kpi,
       max(case when month = 1 then value end) as month_1,
       max(case when month = 2 then value end) as month_2
from t
group by department, year, kpi;

相关问题