PIVOT函式與UNPIVOT函式的運用

2022-07-15 08:24:09 字數 1744 閱讀 8457

pivot用於將行轉為列,完整語法如下:

table_source

pivot(

聚合函式(value_column)

for pivot_column

in()

)unpivot用於將列轉為行,完整語法如下:

完整語法:

table_source

unpivot(

value_column

for pivot_column

in()

)以上語法可以理解為value_column欄位與pivot_column欄位的行列(列行)轉換,pivot_column欄位顯示的列/行為column_list

--建張表table_a

create table table_a(name varchar(8),math int,english int,chinese int)

insert into table_a values('小a',80,90,88)

insert into table_a values('小b',70,90,85)

insert into table_a values('小c',75,95,85)

insert into table_a values('小d',80,90,75)

--原始表資料

select * from table_a

name

math

english

chinese

小a80

9088

小b70

9085

小c75

9585

小d80

9075

--unpivot用於將列轉為行

select subject,name,grade from table_a

unpivot(grade for subject in ([math],[english],[chinese])) as s

subject

name

grade

math

小a80

english

小a90

chinese

小a88

math

小b70

english

小b90

chinese

小b85

math

小c75

english

小c95

chinese

小c85

math

小d80

english

小d90

chinese

小d75

--pivot函式用於將行轉為列

select * from

(select subject,name,grade from table_a

unpivot(grade for subject in ([math],[english],[chinese])) as s

) as a

pivot(sum(grade) for name in ([小a],[小b],[小c],[小d])) as b

subject

小a小b

小c小d

chinese

8885

8575

english

9090

9590

math

8070

7580

實現多行多列轉換,請參考:

PIVOT函式與UNPIVOT函式的運用

pivot用於將行轉為列,完整語法如下 table source pivot 聚合函式 value column for pivot column in unpivot用於將列轉為行,完整語法如下 完整語法 table source unpivot value column for pivot co...

unpivot與pivot的聯合使用

1 序號 張三 姓名 85 語文 85 數學 85 英語 85 歷史 85 地理 85 生物 85 化學 into tunion all select 2 序號 李四 姓名 85 語文 85 數學 85 英語 85 歷史 85 地理 85 生物 85 化學 union all select 3 序號...

PIVOT 和 UNPIVOT例項使用

表的內容 1 select subject 張三 李四 from 2 select subject name,val from pivot 3 as p1 4 pivot max val for name in 張三 李四 as p2 5 order by p2.subject 執行結果 表內容 執...