千家信息网

pivot和unpivot函数

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,今天小编整理的都是固定行转列(列转行)的例子!一:unpivot列转行函数举例演示:创建一张表tmp_test,数据如图所示代码展示:select code,name,cource,grade fro
千家信息网最后更新 2025年01月23日pivot和unpivot函数

今天小编整理的都是固定行转列(列转行)的例子!

一:unpivot列转行函数
举例演示:
创建一张表tmp_test,数据如图所示

代码展示:
select code,name,cource,grade from tmp_test
unpivot(
grade for source in (chinese,math,english)
);
数据结果展示:

二:pivot行转列函数
举例演示:
创建一张表tmp_test2,数据如图所示

代码展示:
select *
from (select username,subject,source from tmp_test2)
pivot (sum(source)
for subject in ('语文' 语文,'数学' 数学,'英语' 英语));
数据结果展示:

其实该sql也可以用decode函数实现:
select username,
sum(decode(subject,'语文',source,0)) 语文,
sum(decode(subject,'数学',source,0)) 数学,
sum(decode(subject,'英语',source,0)) 英语,
from tmp_test2
group by username;

总结:
pivot函数:行转列函数:
  语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值));
unpivot函数:列转行函数:
  语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名));
执行原理:将pivot函数或unpivot函数接在查询结果集的后面。相当于对结果集进行处理。
注:另外有的人说in后面可以跟子查询语句,这个我也不能肯定,但是我在这次例子中自己去尝试了,是不可以的。ORA-00936:缺失表达式

关于这一点,有兴趣的小伙伴可以自己私下再去尝试一下!

今天就先到这里吧,至于动态的行转列我们下次在讨论!

函数 数学 数据 结果 语文 英语 代码 例子 所在 语法 如图 建一 尝试 查询 演示 专列 兴趣 动态 原理 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 老千千静听歌词服务器没了 网络安全月是每年的几月 科研 计算 软件开发 用友u8管理服务器没有启动 无编码软件开发理论 带网络安全模式下重装系统 湖南民政网络安全日海报 客户端与服务器端保持连接状态 亚马逊服务器如何上传网站数据库 数据库依赖关系 公安网络安全问题案例 三部门加密网络安全围栏 手机app一般用的什么服务器 内部网络安全会议 软件开发的发展方向与趋势 学校网络安全宣传周新闻稿 网络安全教育事件 camhi服务器架构 数据库连接过程的编程实例 微信网络安全法是什么意思 阿里云服务器程序被停掉 网页怎么保存到服务器 阿里云轻量服务器管理数据库 网络技术的研究生就业 无锡机架式服务器价格 小学生网络安全班会ppt 中国法律法规数据库百度百科 足球经理数据库怎么验证 蚌埠服务器机柜定制厂家 软件开发怎么防止被攻击
0