手机
当前位置:查字典教程网 >编程开发 >mysql数据库 >浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用
浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用
摘要:/*创建数据库*/CREATEDATABASEtmpgoUSEtmpgo/*创建数据库测试表*/CREATETABLE[Scores]([I...

/*创建数据库*/

CREATE DATABASE tmp

go

USE tmp

go

/*创建数据库测试表*/

CREATE TABLE [Scores]

(

[ID] INT IDENTITY(1, 1)

PRIMARY KEY ,

[Student] VARCHAR(20) ,

[Subject] VARCHAR(30) ,

[Score] FLOAT

)

go

TRUNCATE TABLE Scores

/*插入数据库测试数据信息*/

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'test001', '语文', '90' )

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'test001', '英语', '85' )

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'text002', '语文', '90' )

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'text002', '英语', '80' )

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'test003', '语文', '95' )

INSERT INTO Scores

( Student, Subject, Score )

VALUES ( 'test003', '英语', '85' )

/*1. case when .......then else ....end 用法,行列转换*/

SELECT Student AS '姓名' ,

MAX(CASE Subject

WHEN '语文' THEN Score

ELSE 0

END) AS '语文' ,--如果这个行是“语文”,就选此行作为列

MAX(CASE Subject

WHEN '英语' THEN Score

ELSE 0

END) AS '英语'

FROM Scores

GROUP BY Student

ORDER BY Student

/*2. pivot(聚合函数(要转成列值的列名)

for 要转换的列

in(目标列名)

)*/

SELECT Student AS '姓名' ,

AVG(语文) AS '语文' ,

AVG(英语) AS '英语'

FROM Scores PIVOT( AVG(Score) FOR Subject IN ( 语文, 英语 ) )as NewScores

GROUP BY Student

ORDER BY Student ASC

【浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用】相关文章:

mysql时间戳转成常用可读时间格式的两种方法

MySQL 绿色版安装方法图文教程

php 读取mysql数据库三种方法

MYSQL表优化方法小结 讲的挺全面

清除SQL Server日志的两种方法

MySQL中的SQRT函数的使用方法

SQL语句详解 MySQL update的正确用法

mysql 日期和时间以及转换时间戳函数

mysql 时间转换函数的使用方法第1/2页

修改MYSQL最大连接数的3种方法分享

精品推荐
分类导航