服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - Sql Server 2000 行转列的实现(横排)

Sql Server 2000 行转列的实现(横排)

2019-11-01 14:29mssql教程网 Sql Server

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

我们用到的表结构如下:

Sql Server 2000 行转列的实现(横排)

Sql Server 2000 行转列的实现(横排)

Sql Server 2000 行转列的实现(横排)

三张表的关系为:

Sql Server 2000 行转列的实现(横排)

现有的测试数据为:

Sql Server 2000 行转列的实现(横排)

Sql Server 2000 行转列的实现(横排)

Sql Server 2000 行转列的实现(横排)

我们需要的结果是:

Sql Server 2000 行转列的实现(横排)

复制代码代码如下:


DECLARE @strSQL VARCHAR(8000) 
SET @strSQL = 'SELECT t.STUNAME [姓名]' 
SELECT @strSQL = @strSQL + ',SUM(CASE s.SNAME WHEN ''' + SNAME + ''' THEN g.[Score] END) [' + SNAME + ']' FROM (SELECT SNAME FROM [Subject]) AS tmp 
SELECT @strSQL = @strSQL + ' FROM [Score] g,[Subject] s, [Student] t WHERE g.SID=s.SID AND g.STUID = t.STUID GROUP BY t.STUID, t.STUNAME' 
EXEC(@strSQL) 


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

延伸 · 阅读

精彩推荐