oracle行转列

  • 行转列
    • 场景:查询结果作为字段头出现
    • 方式:
      • 存储过程中,写function拼接
        • 缺点:需有存储过程的调用
      • 使用decode函数进行硬转
        • 缺点:必须确切的知道该列所有的取值
    • decode函数行转列用法:
      • idclassscore
        1语文80
        2数学70
        3英语50
        4语文60


      • 需求:统计语文总分,数学总分,英语总分,形成如下表格:
      • 语文总分数学总分英语总分
        1407050

      • sum/max/min(decode([COL], [VALUE1], [VALUE2])) [COLNAME]
        • sum/max/min 分组函数,因结果集是多列,根据业务逻辑,取对应的值
        • COL 作为转化完成后头的列,在上表中就是class
        • VALUE1 COL的值域中的某个值,比如:‘语文’,‘数学’,‘英语’
        • VALUE2 想要统计的值,在上表就是score
        • COLNAME 转化后的表头,上图就是‘语文总分’,‘数学总分’,‘英语总分’
      • 完整写法:
      • select 
        sum(decode(class, '语文', score)) 语文总分,
        sum(decode(class, '数学', score)) 数学总分,
        sum(decode(class, '英语', score)) 英语总分
        from table;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值