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

2022-08-04 09:48:08 字數 1490 閱讀 7993

測試資料準備

--

建表--

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

bylevel

<=4;

--進點貨cursor lr_sp is

select regexp_substr('

上衣、褲子、襪子、帽子

','[^、]+

',1, level) shangpin from

dual

connect

bylevel

<=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;

endloop;

endloop;

commit

;end;

pivot進行轉換的sql如下:

--

行轉列select

*from

saleslist pivot(

max(salesnum) for shangpin in ( --

shangpin 即要轉成列的字段'上衣

'as 上衣, --

max(salesnum) 此處必須為聚合函式,'褲子

'as 褲子, --

in () 對要轉成列的每乙個值指定乙個列名'襪子

'as襪子, '帽子

'as帽子 )

) where1=

1; --

這裡可以寫查詢條件,沒有可以直接不要where

查詢結果如下圖:

希望這個簡單的例子能夠對大家有幫助~~~~~~~~

SQL Server 中行轉列 列轉行

行轉列 create database test on primary name test.mdf filename d project test.mdf size 10mb,filegrowth 15 log on name test.ndf filename d project test.ldf...

SQL中行轉列 列轉行

sql行轉列 列轉行 這個主題還是比較常見的,行轉列主要適用於對資料作聚合統計,如統計某類目的商品在某個時間區間的銷售情況。整理測試資料 create table wyc test id int 32 not null auto increment name varchar 80 default n...

MySQL中行轉列與列轉行

mysql中行轉列與列轉行 行轉列,即為將mysql中原本同一列 字段 下的內容轉換為同一行的多個字段。如上圖一張成績表,進行如下轉換 1 行轉列轉換後,轉換後,變為如下顯示 明顯可以看出,此時將userid分為了一組,每組都有語文 數學 英語 政治這幾門課的成績。方式一 用if語句轉換 selec...