SQL Server 行转列的实现(横排)

SQL Server 2000

在一些统计报表中,常常会用到将行结果用列形式展现。我们这里用一个常见的学生各门课程的成绩报表,来实际展示实现方法。

我们用到的表结构如下:

SQL Server 行转列的实现(横排)

三张表的关系为:

SQL Server 行转列的实现(横排)

现有的测试数据为:

SQL Server 行转列的实现(横排)

我们需要的结果是:

SQL语句如下:

SQL SERVER 2005 中,已经有实现此功能的内置方法了。

SQL SERVER 2005中新增加了两个关系运算符 PIVOT/ UNPIVOT,能够实现表中的列转换到行,以及行到列的转换工作。
举例,还是先创建测试数据表 :

我们想要得到类似这样的结果:

Year Jan Feb Mar …………..

—– ———- ———– ———–

2004 789.0000 389.0000 8867.0000 ………….

2005 7.0000 6868.0000 688.0000 …………..

用上面介绍的方法当然可以实现,但现在这里想要的列是固定的,不是动态的,就是12个月,所以也可以这样子来用:

但这样事实上还是相当麻烦的,现在SQLSERVER2005中有更方便的实现方法。

就是这样,很简单的用法,效果是完全一样的。

我们再尝试一下把year去掉:

得到的结果是:

Jan Feb Mar …

———- ———— ———–

796.0000 7257.0000 9555.0000 …


同一个月份的数据累加到一起。


再给个微软官方的例子:

SQL Server 行转列的实现(横排)

你可能感兴趣的:(数据结构,sql,sql,server)