SQL SERVER 行转列 PIVOT 用法及解释
在数据库操作过程中,偶尔会使用到《行转列》查询;下面介绍Sql server 中常用的行转列操作;
1.语法
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现
PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P
完整语法:
table_source
PIVOT(
聚合函数(value_column)FOR pivot_column IN (<column_list>)
)
2.聚合函数
排序 | 函数 |
1 | AVG 平均值 |
2 | MIN 最小值 |
3 | MAX 最大值 |
4 | SUM 求和值 |
5 | count(count_big)统计项数值 |
6 | STDEV 计算标准偏差值 |
7 | VAR 计算方差 |
8 | CHECKSUM_AGG |
9 | COUNT_BIG |
10 | STDEVP |
11 | GROUPING |
12 | GROUPING_ID |
13 | VARP |
3.举例
2.1创建一张Student 表:
CREATE TABLE Student(
[Name] [nvarchar](50) NULL,
[Sex] [nvarchar](10) NULL,
[Age] [nvarchar](50) NULL,
[Grade] [nvarchar](50) NULL,
[Clasee] [nvarchar](50) NULL,
[Score] [decimal](18, 2) NULL,
)
2.2 插入数据
INSERT Student(Name,Sex,Age,Grade,Clasee,Score)
VALUES
('小红','女','12','5','数学','90'),
('小红','女','12','5','语文','89'),
('小红','女','12','5','英语','95'),
('小蓝','男','13','5','数学','93'),
('小蓝','男','13','5','语文','87'),
('小蓝','男','13','5','英语','92'),
('小花','女','11','5','英语','91'),
('小花','女','11','5','数学','85'),
('小花','女','11','5','语文','92')
2.3 按行查询学生名字,列举出 数学,语文,英语成绩
方法1:使用 PIVOT
SELECT * FROM
(SELECT Name,Clasee,Score FROM Student ) A
PIVOT (MAX(Score) FOR Clasee IN ([数学],[语文],[英语])) B
方法2:使用CASE
SELECT
Name,
MAX(CASE WHEN Clasee='数学' THEN Score ELSE 0 END) AS [数学],
MAX(CASE WHEN Clasee='语文' THEN Score ELSE 0 END) AS [语文],
MAX(CASE WHEN Clasee='英语' THEN Score ELSE 0 END) AS [英语]
FROM Student
GROUP BY NAME
作者:冰零界点
来源链接:https://blog.csdn.net/weixin_30589127/article/details/113487829
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。