• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Oracle 数据显示 横表转纵表
    1.建表
    复制代码 代码如下:

    -- Create table
    create table test
    (
    dm1 char(3),
    dm2 char(3),
    mc1 nvarchar2(20),
    val nvarchar2(20)
    )

    2.填入数据如下:

    DM1 DM2 MC1 VAL
    101 1 c1 100
    101 1 c2 80
    101 1 c3 40
    101 2 c1 30
    101 2 c2 80
    102 4 c1 9
    102 6 c2 50

    转换后数据显示如下:

    DM1 DM2 c1 c2 c3
    101 1 100 80 40
    101 2 30 80  
    102 4 9    
    102 6   50  

    3.转换语句:

    复制代码 代码如下:

    select dm1,dm2,sum(decode(mc1,'c1',val)) c1,sum(decode(mc1,'c2',val)) c2,sum(decode(mc1,'c3',val)) c3
    from test
    group by dm1,dm2

    注:该语句是在val为数值的情况下的执行方法,如果val不为数值型,或者包含字符串等类型的话,运用sum会报错,这里可以采用另外一个方法,将sum改为max即可,语句如下:
    复制代码 代码如下:

    select dm1,dm2,max(decode(mc1,'c1',val)) c1,max(decode(mc1,'c2',val)) c2,max(decode(mc1,'c3',val)) c3
    from test
    group by dm1,dm2

    此外,横表转纵表亦可用与decode意义相似的case语句实现,原理同该语句,这里不再过多描述。

    上一篇:oracle 查询表名以及表的列名
    下一篇:oracle应用程序实现打包 的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Oracle 数据显示 横表转纵表 Oracle,数据,显示,横表转,