SQL语句行列转换两种方法 case ...when 和pivot函数应用
2013-08-10 17:26
661 查看
SQL语句行列转换两种方法 case ...when 和pivot函数应用
SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法
比较多,比较普遍。
/*创建数据库*/
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函数的应用
- 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
- 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用
- SQL语句积累2:行列转换、case when筛选条件
- SQL中case when的两种使用方法示例
- case when as将外键引用的编号用sql语句转换成能看懂的说明
- SQL语句中的case when语法以及Oracle中的类似方法
- sql语句case when使用和date_formate()的使用,DATEDIFF(字段1,字段2)获取天数,常用的MYSQL的函数
- SQL 2005 行列转换 实例(函数PIVOT&UNPIVOT)
- SQL语句中的case when语法以及Oracle中的类似方法
- SQL行列转换,PIVOT与UNPIVOT的区别和使用方法举例
- 每日总结:sql 转换为int时发生算术溢出错误、DatePart()、DateAdd()、DateDiff()函数、Case when then
- SQL Server SQL性能优化之--pivot行列转换减少扫描计数优化查询语句
- SQL语句中 Case具有两种格式:简单Case函数和Case搜索函数
- SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子
- 如何替换掉日期类型值为空时的默认日期? SQL语句Replace的应用和Case when 的用法。
- 每日总结:sql 转换为int时发生算术溢出错误、DatePart()、DateAdd()、DateDiff()函数、Case when then
- sql语句判断方法case when then 还…
- SQL语句中的case when语法以及Oracle中的类似方法