表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现

在数据库的数据处理中我们有时候需要对数据进行行列互换即把形如下面的数据

 

表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现


转换为如下的形式

 

表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现

 

下面看看我们在Sql Server 2000 和  Sql Server 2005  中的分别实现

首先创建测试环境

 

表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现 

 

 下面是在Sql Server 2000 中的实现


表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现 

 

这样子虽然能满足我们目前表中数据的需求,但是如果学生的考试科目又增加一门

比如政治这样子我们原先写好的sql 可能要改变,那我是不是可以写一个通用的方法

经过观察我们可以对

 

表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现


 做一个归纳可以可以用拼凑动态Sql语句实现


表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现 

 

 通过上面的语句我们可是实现我们的目的,并且具有一般的通用性

下面看我们在Sql server 2005 如何实现,Sql server 2005  对T-SQL 进行了增强

PIVOT 提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单、更具可读性。

我们可以用下面一句sql 实现


select * from PIVOTDemo pivot ( sum([mark]) for [course] in([语文],[数学],[英语])) as pvt

 


转载于:https://www.cnblogs.com/huangbaixun/archive/2008/07/26/1252002.html