标签:
首先我们建立一张表,名为RToC,各个字段的设计如下图,分别是name,course,score,表示姓名,成绩与分数,如图所示。
我们往表中加入数据,分别添加小明与小花的语文和数学成绩,如图所示。
接下来,我们要进行行列转换,列应该是name,语文,数学。我们首先要考虑是如何得到列名,我们可以通过分组得到课程名称。如图所示,我们通过分组语句,从查询结果我们可以看出课程名的拼接字符串。
代码:
declare @sql varchar(200) select @sql=ISNULL(@sql+‘,‘,‘‘)+course from RToC group by course select @sql
效果:
接下来,关键的行转列的函数pivot出场了,通过这个函数我们把分数填充到转换的列语文、数学的列值。
declare @sql varchar(200) select @sql=ISNULL(@sql+‘,‘,‘‘)+course from RToC group by course set @sql=‘select * from RToC pivot(max(score) for course in (‘+@sql+‘)) t‘ exec(@sql)
我们运行后,可以得到行转列的结果,如下图所示。
通过以上几个步骤,我们就可以轻松的实现行列转换了。同样,我们如果要把列转换成行, 应该怎么做呢?同样我们可以采用unpivot函数轻松实现。
标签:
原文地址:http://www.cnblogs.com/tianguook/p/4508157.html