这篇文章主要为大家详细介绍了浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!
/*创建数据库*/
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
本文来自:http://www.q1010.com/177/9719-0.html
注:关于浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:MYSQL
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。