Oracle中行转列,列转行pivot的用法

测试数据准备

1--建表 2--drop table SalesList; 3create table SalesList( 4 keHu varchar2(20), --客户 5 shangPin varchar2(20), --商品名称 6 salesNum number(8) --销售数量 7); 8 9--插入数据 10declare 11 --谈几个客户 12 cursor lr_kh is 13 select regexp_substr('张三、李四、王五、赵六','[^、]+',1, level) keHu from dual 14 connect by level <= 4; 15 --进点货 16 cursor lr_sp is 17 select regexp_substr('上衣、裤子、袜子、帽子','[^、]+',1, level) shangPin from dual 18 connect by level <= 4; 19begin 20 --循环插入 21 for v_kh in lr_kh loop 22 for v_sp in lr_sp loop 23 insert into SalesList 24 select v_kh.keHu, v_sp.shangPin, floor(dbms_random.value(10,50)) from dual; 25 end loop; 26 end loop; 27 commit; 28end;

pivot进行转换的sql如下:

1--行转列 2select * 3 from SalesList pivot( 4 max(salesNum) for shangPin in ( --shangPin 即要转成列的字段 5 '上衣' as 上衣, --max(salesNum) 此处必须为聚合函数, 6 '裤子' as 裤子, --in () 对要转成列的每一个值指定一个列名 7 '袜子' as 袜子, 8 '帽子' as 帽子 9 ) 10 ) 11 where 1 = 1; --这里可以写查询条件,没有可以直接不要where

查询结果如下图:

希望这个简单的例子能够对大家有帮助~~~~~~~~

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

PPDB:今晚老齐直播

【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。

表的纵横表变换

​在我们平时使用数据库时,经常会发现有的表列数过多,为了提高效率,我们经常对要查询的表来纵横表变换。一.行转列1.PIVOT函数PIVOT(任意聚合函数 FOR 列名 IN(类型))    其中,【聚合函数】聚合的字段,是需要转化为列值的字段;【列名】是需要转化为列标识的字段,【类型】即是需要的结果展示,【类型】中可以指定别名; IN中还可以

MYSQL函数group_concat的使用

今天对一批数据要迁移转换,查了下,有group\_concat这个函数简单实现字段的列转行设置,过程记录如下一.测试数据准备mysqlusetest;Databasechangedmysqlselectfromt_kenyon;|id|

Mysql 分区表

DROPTABLEIFEXISTS\frank\_test\;CREATETABLE\frank\_test\(\id\bigint(20)NOTNULLAUTO\_INCREMENTCOMMENT'主键id',\gid\bigint(20)DEFAULT'0'COMMENT'基础表id'