测试数据准备
--建表 --drop table SalesList; create table SalesList( keHu varchar2(20), --客户 shangPin varchar2(20), --商品名称 salesNum number(8) --销售数量 ); --插入数据 declare --谈几个客户 cursor lr_kh is select regexp_substr('张三、李四、王五、赵六','[^、]+',1, level) keHu from dual connect by level <= 4; --进点货 cursor lr_sp is select regexp_substr('上衣、裤子、袜子、帽子','[^、]+',1, level) shangPin from dual connect by level <= 4; begin --循环插入 for v_kh in lr_kh loop for v_sp in lr_sp loop insert into SalesList select v_kh.keHu, v_sp.shangPin, floor(dbms_random.value(10,50)) from dual; end loop; end loop; commit; end;
pivot进行转换的sql如下:
--行转列 select * from SalesList pivot( max(salesNum) for shangPin in ( --shangPin 即要转成列的字段 '上衣' as 上衣, --max(salesNum) 此处必须为聚合函数, '裤子' as 裤子, --in () 对要转成列的每一个值指定一个列名 '袜子' as 袜子, '帽子' as 帽子 ) ) where 1 = 1; --这里可以写查询条件,没有可以直接不要where
查询结果如下图:
希望这个简单的例子能够对大家有帮助~~~~~~~~