当前位置: 首页 >数据库 > SQL SERVER 行转列 PIVOT 用法及解释

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 计算方差

8CHECKSUM_AGG
9COUNT_BIG
10STDEVP
11GROUPING 
12GROUPING_ID
13VARP

 

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 ) APIVOT (MAX(Score) FOR Clasee IN ([数学],[语文],[英语])) B

   

SQL SERVER 行转列 PIVOT 用法及解释 _ JavaClub全栈架构师技术笔记

 方法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 StudentGROUP BY NAME

SQL SERVER 行转列 PIVOT 用法及解释 _ JavaClub全栈架构师技术笔记

作者:冰零界点
来源链接:https://blog.csdn.net/weixin_30589127/article/details/113487829

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/112500.html

标签:SQLServer
分享给朋友:

“SQL SERVER 行转列 PIVOT 用法及解释” 的相关文章

JDBC工具类(DButil) 2022年05月13日 09:13:25
MySQL表的增删改查(进阶) 2022年05月16日 21:54:11
mysql 查询或 2022年06月07日 13:56:22
MYSQL查询某字段为空的数据 2022年06月08日 21:35:13