首页 > 数据库 > mysql教程 > Oracle行转列 简单示例

Oracle行转列 简单示例

WBOY
发布: 2016-06-07 15:20:18
原创
894 人浏览过

在开发的过程中,有时候需要将行数据转换为列数据,这种情况可用Decode函数和分组来实现 --构造数据集with A as (select '阿诗玛' Name, '语文' Class, '86' Score from dual union all select '阿诗玛', '数学', '95' from dual union all select '阿诗玛',

在开发的过程中,有时候需要将行数据转换为列数据,这种情况可用Decode函数和分组来实现

--构造数据集
with A as
 (select '阿诗玛' Name, '语文' Class, '86' Score
    from dual
  union all
  select '阿诗玛', '数学', '95'
    from dual
  union all
  select '阿诗玛', '物理', '90'
    from dual
  union all
  select '阿诗玛', '英语', '92' from dual)
  --行列转换
select Name,
       max(decode(Class, '语文', Score)) 语文,
       max(decode(Class, '数学', Score)) 数学,
       max(decode(Class, '英语', Score)) 英语       
  from A
 group by Name;
登录后复制

结果如下:

--转换前
-----------------
| Name |Class|Score|
|阿诗玛 |语文  | 86  |
|阿诗玛 |数学  | 95  |
|阿诗玛 |物理  | 90  |
|阿诗玛 |英语  | 92  |
-----------------
--转换后
-------------------------
| 姓名 | 语文|数学|英语|物理|
|阿诗玛| 86  |95 | 92 | 90 |
-------------------------
登录后复制


 上面这个示例只是一个简单的转换,如果要批量动态的实现,可以用游标通过循环列名来得到想要的效果

 

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板