当前位置: 首页 > 图文教程 > 数据库 > MSSQL > Sql Server 2000 行转列的实现(横排)

MSSQL
SQL Server数据库技术(14)
SQL Server数据库技术(15)
SQL Server数据库技术(16)
SQL Server数据库技术(17)
SQL Server数据库技术(18)
SQL Server数据库技术(19)
SQL Server数据库技术(20)
SQL Server数据库技术(21)
SQL Server数据库技术(22)
SQL Server数据库技术(23)
SQL Server数据库技术(24)
SQL Server数据库技术(25)
SQL Server数据库技术(26)
SQL Server数据库技术(27)
SQL Server数据库技术(28)
SQL Server数据库技术(30)
SQL Server数据库技术(31)
SQL Server数据库技术(32)
SQL Server数据库技术(34)
SQL Server数据库技术(35)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 121 ::
收藏到网摘: n/a

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

stu

sub

score

三张表的关系为:

r.pg

现有的测试数据为:

s

ss

t

我们需要的结果是:

r

复制代码 代码如下:

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 中,已经有实现此功能的内置方法了。