Oracle行转列pivot

案例一:

按天汇总学生每天学习时长

create table stu
(
  day  VARCHAR2(20),
  name VARCHAR2(20),
  len  NUMBER
);
INSERT INTO stu VALUES ('01', '张三', 3);
INSERT INTO stu VALUES ('01', '李四', 4);
INSERT INTO stu VALUES ('02', '张三', 1);
INSERT INTO stu VALUES ('02', '李四', 5);
INSERT INTO stu VALUES ('03', '张三', 8);
INSERT INTO stu VALUES ('03', '李四', 6);
INSERT INTO stu VALUES ('04', '张三', 3);
INSERT INTO stu VALUES ('04', '李四', 2);
INSERT INTO stu VALUES ('05', '张三', 2);
INSERT INTO stu VALUES ('05', '李四', 5);
INSERT INTO stu VALUES ('06', '张三', 7);
INSERT INTO stu VALUES ('06', '李四', 2);
INSERT INTO stu VALUES ('07', '张三', 2);
INSERT INTO stu VALUES ('07', '李四', 3);
INSERT INTO stu VALUES ('08', '张三', 1);
INSERT INTO stu VALUES ('08', '李四', 3);
INSERT INTO stu VALUES ('09', '张三', 5);
INSERT INTO stu VALUES ('09', '李四', 1);
INSERT INTO stu VALUES ('10', '张三', 6);
INSERT INTO stu VALUES ('10', '李四', 7);

select day,name,len from stu

select *
  from (SELECT name, len, day FROM stu) t
pivot(max(len)
   for day in('01',
              '02',
              '03',
              '04',
              '05',
              '06',
              '07',
              '08',
              '09',
              '10',
              '11',
              '12',
              '13',
              '14',
              '15'))

 

案例二:

 按天汇总学生每天学习时长(分上下午汇总)

create table stu
(
  day  VARCHAR2(20),
  name VARCHAR2(20),
  len  NUMBER
);
INSERT INTO stu VALUES ('01', '张三', 1);--上午
INSERT INTO stu VALUES ('01', '张三', 2);--下午
INSERT INTO stu VALUES ('01', '李四', 2);--上午
INSERT INTO stu VALUES ('01', '李四', 2);--下午
INSERT INTO stu VALUES ('02', '张三', 1);
INSERT INTO stu VALUES ('02', '李四', 3);
INSERT INTO stu VALUES ('02', '李四', 2);
INSERT INTO stu VALUES ('03', '张三', 5);
INSERT INTO stu VALUES ('03', '张三', 3);
INSERT INTO stu VALUES ('03', '李四', 2);
INSERT INTO stu VALUES ('03', '李四', 4);
INSERT INTO stu VALUES ('04', '张三', 3);
INSERT INTO stu VALUES ('04', '李四', 2);
INSERT INTO stu VALUES ('05', '张三', 2);
INSERT INTO stu VALUES ('05', '李四', 5);
INSERT INTO stu VALUES ('06', '张三', 7);
INSERT INTO stu VALUES ('06', '李四', 2);
INSERT INTO stu VALUES ('07', '张三', 2);
INSERT INTO stu VALUES ('07', '李四', 3);
INSERT INTO stu VALUES ('08', '张三', 1);
INSERT INTO stu VALUES ('08', '李四', 3);
INSERT INTO stu VALUES ('09', '张三', 5);
INSERT INTO stu VALUES ('09', '李四', 1);
INSERT INTO stu VALUES ('10', '张三', 6);
INSERT INTO stu VALUES ('10', '李四', 7);

 select day,name,len from stu

select *
  from (SELECT name, len, day FROM stu) t
pivot(sum(len)
   for day in('01',
              '02',
              '03',
              '04',
              '05',
              '06',
              '07',
              '08',
              '09',
              '10',
              '11',
              '12',
              '13',
              '14',
              '15'))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值