PIVOT函式與UNPIVOT函式的運用

2021-09-24 19:49:06 字數 1723 閱讀 7840

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 執行結果 表內容 執...