oracle数据库纵横表变换

本文介绍了在数据库操作中如何进行行转列和列转行的高效方法,包括使用PIVOT函数、MAX和DECODE函数以及CASE WHEN语句进行行转列,以及运用UNPIVOT函数和UNION ALL进行列转行的操作。这些技巧对于优化查询效率和数据整理至关重要。
摘要由CSDN通过智能技术生成

在我们平时使用数据库时,经常会发现有的表列数过多,为了提高效率,我们经常对要查询的表来纵横表变换。

一.行转列

1.PIVOT函数

PIVOT(任意聚合函数  FOR  列名  IN(类型))

        其中,【聚合函数】聚合的字段,是需要转化为列值的字段;【列名】是需要转化为列标识的字段,【类型】即是需要的结果展示,【类型】中可以指定别名; IN中还可以指定子查询。

2、使用 MAX 和 DECODE 函数

3、使用 CASE  WHEN  和  GROUP  BY

二、列转行

1、使用对应的UNPIVOT函数

函数说明:

        UNPIVOT(自定义列名1【列的值】  FOR  自定义列名2【列名】  IN(【列名】))

        其中,【列的值】字段,是将我们的值字段转为行数据中的【自定义列名1】;【列名】是将我们的列标题字段转为行数据中的【自定义列名2】,【列名】即是转为行的列名。

 2.用union all 进行拼接
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值