测试数据准备
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
查询结果如下图:

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