您的位置:首页 > 数据库 > Oracle

Oracle行转列 简单示例

2012-04-19 17:28 316 查看
在开发的过程中,有时候需要将行数据转换为列数据,这种情况可用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 |
-------------------------


上面这个示例只是一个简单的转换,如果要批量动态的实现,可以用游标通过循环列名来得到想要的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: