码迷,mamicode.com
首页 > 数据库 > 详细

sql行列转换

时间:2015-05-16 18:06:41      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

  1. 首先我们建立一张表,名为RToC,各个字段的设计如下图,分别是name,course,score,表示姓名,成绩与分数,如图所示。

  2. 2

    我们往表中加入数据,分别添加小明与小花的语文和数学成绩,如图所示。

  3. 3

    接下来,我们要进行行列转换,列应该是name,语文,数学。我们首先要考虑是如何得到列名,我们可以通过分组得到课程名称。如图所示,我们通过分组语句,从查询结果我们可以看出课程名的拼接字符串。

    代码:

    declare @sql varchar(200)
    select @sql=ISNULL(@sql+,,‘‘)+course from RToC group by course
    select @sql

    效果:

  4. 4

    接下来,关键的行转列的函数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)
  5. 5

    我们运行后,可以得到行转列的结果,如下图所示。

  6. 6

    通过以上几个步骤,我们就可以轻松的实现行列转换了。同样,我们如果要把列转换成行, 应该怎么做呢?同样我们可以采用unpivot函数轻松实现。

sql行列转换

标签:

原文地址:http://www.cnblogs.com/tianguook/p/4508157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!