上一篇:Session 详解 >>
关于交叉报表的动态实现
studentID studentName courseName1 courseName2 courseName3 ……
1 lupenda 66 77 88 ……
。
。
。
下面的例子就是为了实现上面的功能,该存取过程涉及3张表:
Course表:
CourseID,CourseName,Duration,[Year],MajorID,Semester
StudentData表:
StudentID,StudentName,ClassID……
Student_Course表:
StudentID,CourseID,Score
--根据不同参数取得成绩
--可以得到某学期,某专业,某班级,某学生的成绩
CREATE procedure GetScore
@Year int ,@Semester bit ,@MajorID int = null,@ClassID int = null,@StudentID int = null
as
declare @var varchar(200)
declare @sql varchar(8000)
set @sql=‘’‘’
--放进临时表
select distinct CourseName into #tb from Course where Course.Year = @Year and Course.Semester = @Semester
--声明游标
declare cur cursor
for select CourseName from #tb
open cur
fetch next from cur into @var
while @@fetch_status=0
begin
set @sql = @sql + ‘’sum(case when Course.CourseName = ‘’‘’‘’ +@var+ ‘’‘’‘’ then Student_Course.Score else 0 end) as ‘’+ @var+‘’,‘’
fetch next from cur into @var
end
set @sql = left(@sql,len(@sql)-1)
set @sql = ‘’select Class.ClassName as 班级,Student_Course.StudentID as 全学号,StudentData.StudentName as 姓名, ‘’ +@sql+ ‘’
from StudentData,Student_Course,Course ,Class
where Student_Course.CourseID = Course.CourseID
and StudentData.StudentID = Student_Course.StudentID
and StudentData.ClassID = Class.ClassID‘’
--根据输入参数的不同创建查询语句
if @Year is not null
set @sql = @sql+ ‘’ and Course.Year = ‘’+ Cast( @Year as varchar(4)) --强制转换为字符串
if @Semester is not null
set @sql = @sql+ ‘’ and Course.Semester = ‘’+ Cast( @Semester as varchar(1))
if @MajorID is not null
set @sql = @sql+ ‘’ and Course.MajorID = ‘’+ Cast( @MajorID as varchar(4))
if @ClassID is not null
set @sql = @sql+ ‘’ and StudentData.ClassID = ‘’+ Cast( @ClassID as varchar(4))
if @StudentID is not null
set @sql = @sql+ ‘’ and StudentData.StudentID = ‘’+ Cast( @StudentID as varchar(8))
set @sql = @sql+ ‘’group by Class.ClassName,Student_Course.StudentID,StudentData.StudentName order by Student_Course.StudentID ‘’
exec(@sql)
deallocate cur
drop table #tb
GO
至此,该存取过程实现了我们想要的功能.第一次发文章,请大家多多支持!
下一篇:页面执行需要长时间时向用户的提示信息 >>
相关文章:
- · 线程的处理(1)
- · 再谈ASP防止SQL Injection漏洞的问题
- · 用asp编写文档搜索页面
- · ASP中使用SQL语句
- · 利用反射动态调用类成员
- · Asp.net组件设计浅论
- · 越过调试这道槛——ASP.NET无法调试问题剖析
- · 一段用ASP查看ASP文件源码的程序.
- · ASP显示在线人数
- · Asp.net多页面间保留状态
- · 简单ASP计数器
- · 使用 HttpContext.RewritePath 来配合 Server.Transfer/Execute
- · SQLSERVER扩展存储过程XP_CMDSHELL的简单应用
- · SQL Server 存储过程的分页
- · 经典的asp整理
- · Access中分组统计的实例
- · 一段分页程序实例代码!
- · 从asp到asp.net之快速转型
- · ASP升级程序
- · 利用WebClient类向服务器上载文件
- · .net中Web自定义控件编写的几个注意事项
- · 奇妙的.NET之Web程序中使用windows弹出框
- · webservice.htc无法传递中文数据的解决
- · 用反射调用别人的.NET程序里的类和方法
- · DataView如何绑定Web Service返回的主从表数据集
- · 在类中添加断言
- · UBB代码的实现(ASP)
- · 精确的判断网络是否可用
- · 调试SharePoint web part时, 如何可以多个人同时启动调试?
- · 关于编译器失败,错误代码为 128。的解决方案
- · 如何实现将用户上传的文件生成缩略图!
- · 链接提示文字的实现
- · Code Behind技术
- · 几个开源项目实体层实现方式比较
- · 上传图片并生成缩略图
- · ASP全程讲座
- · 在网页中添加天气预报
- · 鼠标下浮动的文字和时钟
