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(目标列名)
)*/
--by www.jbxue.com
SELECT Student AS '姓名' ,
AVG(语文) AS '语文' ,
AVG(英语) AS '英语'
FROM Scores PIVOT( AVG(Score) FOR Subject IN ( 语文, 英语 ) )as NewScores
GROUP BY Student
ORDER BY Student ASC
分享到:
相关推荐
/*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT IDENTITY(1, 1) PRIMARY KEY , [Student] VARCHAR(20) , [Subject] VARCHAR(30) , [Score] ...
SQL语句行列转换(附带数据库、表、视图操作) ,不错的文档。
动态 实现 SQL 2008行列转换的pivot
SQL行列转换 Pivot UnPivot
主要介绍了SQLServer行列互转实现思路,使用聚合函数pivot/unpivot实现行列互转,感兴趣的小伙伴们可以参考一下
pivot 与 unpivot 函数是SQL05新提供的2个函数 灰常灰常的实用
This intermediate course focuses on using SQL as a data query and manipulation tool. You learn to use the SQL procedure as a data retrieval tool within SAS programs. Specifically, you learn how to ...
.............\get_pivot.sql .............\login.sql .............\proc_defs.sql .............\Rebuild_Index.sql .............\soap_api.sql .............\switch_schema.sql .............\table_...
T-SQL语句中,Pivot运算符用于在列和行之间对数据进行旋转或透视转换,PIVOT命令可以实现数据表的列转行,同时执行聚合运算,UNPIVOT则与其相反,实现数据的行转列。
高斯迭代解方程 数值分析 西安交通大学 作业
Wrox.Professional.Microsoft.PowerPivot.for.Excel.and.SharePoint.Jun.2010.rar
很多书籍包括教材介绍pivot语句不详细,难以理解其查询结果,这样势必会造成使用该语句时有困难,本文理论讲解透彻,结合例题分析,最后给出实验题目让你练手,以尽快掌握其使用。
说明:sql server如何通过pivot对数据进行行列转换 */ create table #t ( [员工工号] nvarchar(50), [员工姓名] nvarchar(50), [月份] nvarchar(50), [工资] int ) insert into #t values(N'01', N'张三', N'...
create or replace function pivot( p_stmt in varchar2, p_fmt in varchar2 := 'upper(@p@)', dummy in number := 0 ) return anydataset pipelined using PivotImpl;
Easily set your pivot points inside Unity. Unlike the other pivot editor solutions on the asset store you can set the pivot point using scene handles, snap the pivot to mesh vertices. Features: • ...
t-sql编程实现静态和动态的行转列、列转行代码
matlab 高斯列主元消去法求解线性方程组程序,可用于求解任何元数方程组