我的做法是先把这5个表做一个查询“成绩查询”:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER VIEW dbo.成绩查询
AS
SELECT TOP 100 PERCENT dbo.学年度.学期, dbo.班级.班级, dbo.学生名单.学籍号,
dbo.学生名单.班中序号, dbo.学生名单.姓名, dbo.课程名称.课程名称, dbo.成绩单.成绩评定
FROM dbo.班级 INNER JOIN
dbo.学生名单 ON dbo.班级.班级编号 = dbo.学生名单.班级编号 INNER JOIN
dbo.成绩单 ON dbo.学生名单.学籍号 = dbo.成绩单.学籍号 INNER JOIN
dbo.课程名称 ON dbo.成绩单.课程编号 = dbo.课程名称.课程编号 INNER JOIN
dbo.学年度 ON dbo.成绩单.学年度编号 = dbo.学年度.学年度编号
ORDER BY dbo.学年度.学期 DESC, dbo.班级.班级, dbo.学生名单.班中序号,
dbo.学生名单.学籍号, dbo.课程名称.课程名称
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
然后再交叉表查询:
declare @sql varchar(8000)
set @sql = 'select 学期,班级,班中序号,姓名,'
select @sql = @sql + '(case 课程名称 when '''+课程名称+'''
then 成绩评定 else '''+ +''' end) as '''+课程名称+''','
from (select 课程名称 from 成绩查询 ) as a
select @sql = left(@sql,len(@sql)-1) + ' from 成绩查询 '+ ' where 姓名='+'''李好人'''+' and 学期='+'''04-05学年上学期'''+' order by 学期'
exec(@sql)
提示错误信息:
服务器: 消息 170,级别 15,状态 1,行 119
第 119 行: '李好人' 附近有语法错误。
服务器: 消息 105,级别 15,状态 1,行 119
字符串 ' order by 学期' 之前有未闭合的引号。
然后没招了!请各位高手帮忙。
[此贴子已经被作者于2006-4-20 10:46:53编辑过]
|