Sql行列转换

name           subject           result

   Lily            Java                 74

   Lily           Hibernate          83

   LiLy          Oracle               93

   Lucy        Java                   74

   Lucy        Hibernate           84

   Lucy      Oracle                  94

   

   

   fullname        Java         Hibernate        Oracle

   LiLy              74               83                    93

   Lucy             74               84                    94

   

 select name as 'fullname',

           max(case subject when 'Java' then result else 0 end) as Java,

           max(case subject when 'Hibernate' then result else 0 end) as Hibernate,

           max(case subject when 'Oracle' then result else 0 end) as Oracle

from table

           group by name

 

 

实例2:

表数据

id  name subject score1

22 张三 语文 81

23 张三 数学 75

24 李四 语文 76

25 李四 数学 90

26 王五 语文 81

27 王五 数学 100

28 王五 英语 90

 

查询

select 

    sc.name as 姓名,

    max(case sc.subject when '语文' then sc.score1 else 0 end) as 语文,

    max(case sc.subject when '数学' then sc.score1 else 0 end) as 数学,

    max(case sc.subject when '英语' then sc.score1 else 0 end) as 英语,

    sum(nvl(sc.score1,0)) as sumScore,

    round(avg(nvl(sc.score1,0)),2) as avgScore

 from score sc

group by sc.name;

 

结果

姓名 语文 数学 英语 SUMSCORE AVGSCORE

张三8175015678

王五811009027190.33

李四7690016683

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值