欢迎来到天天文库
浏览记录
ID:34556535
大小:233.58 KB
页数:6页
时间:2019-03-07
《基于sql server交叉表的学生成绩统计方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、http://www.paper.edu.cn基于SQLServer交叉表的学生成绩统计方法季石磊天津工业大学管理学院,天津(300184)E-mail:shileiji@yahoo.com.cn摘要:在教学管理信息系统的开发过程中,灵活的学生成绩统计与分析是整个系统输出报表的关键问题之一,针对这一问题本文具体阐述了如何利用SQLServer交叉表来进行学生成绩统计。关键词:交叉表,成绩统计,教学管理中图分类号:TP311.11.引言无论是基于B/S结构的教学管理系统还是基于C/S结构的教学管理系统,学生成绩管理都是系统的一个重要的功能模块。很多现有的教学管理系统对学生成绩
2、的管理只是进行了一些分类汇总和简单的统计,如要实现较为复杂的报表分析就要借助第三方的报表工具(例如[1]CrystalReport等)。这样不但开发实现较为困难,而且用户的使用也不方便。本文探讨使用SQLServer动态交叉表来结果学生成绩统计问题,并取得了很好的效果。本系统以ASP.NET(C#)主要开发语言,以VisualStudio.Net2003为主要的开发工作,以SQLServer2000作为数据库。在系统开发过程中所有与数据库操作有关的操作用SQLServer存储过程来实现,形成了“Asp.Net+存储过程+数据库”的结构。2.交叉表及其实现方式在进行信息系统的
3、开发过程中可能需要将正常数据集旋转,以便在水平方向显示列,垂直方向显示行,这就是所谓的交叉表(PrivotTable)。交叉表是一个特殊的网格,交叉表中数据显示在压缩行和列中。这种格式使用户更加容易比较数据并确定趋势。交叉表对象由三个元素组成:ò行ò列ò摘要字段ò列语文数学英语平均总计行小明859865李伟627569周强759185总计周强的英语成绩(交叉)图1交叉表原理-1-http://www.paper.edu.cn2.1静态交叉表交叉表通常分为两种,一种是静态的交叉表,一类是动态的交叉表。静态交叉表就是交叉表中的字段是预先设定好的,其列的个数是一个确定的数值,而其
4、在这样的交叉表中,原始数据表中的数据项分类也是确定的,这种交叉表实现比较简单。如图2所示,语文、数学、英语三科的成绩放在学生成绩表,需要从学生成绩表得到每一个学生的语文、数学、英语三科的交叉成绩。NameSubjectScroeName语文数学英语王明英语75王明8575赵朋数学65赵朋65张强英语98张强98王明语文85图2静态交叉示意图首先需要创建一个数据表:CREATETABLE[dbo].[tblScroe]([Name][varchar](50)COLLATEChinese_PRC_CI_ASNULL,[Subject][varchar](10)COLLATECh
5、inese_PRC_CI_ASNULL,[Scroe][numeric](18,1)NULL)ON[PRIMARY]创建交叉表视图:createviewvScroeasselectname,sum(casesubjectwhen'数学'thenScroeelse0end)as'数学',sum(casesubjectwhen'英语'thenScroeelse0end)as'英语',sum(casesubjectwhen'语文'thenScroeelse0end)as'语文'fromtblScroegroupbyname[2]在以上视图中,最为关键的SQL语法是CASE函数,其
6、语法格式如下:CASEinput_expressionWHENwhen_expressionTHENresult_expression[...n][ELSEelse_result_expression]ENDinput_expression是使用简单CASE格式时所计算的表达式。Input_expression是任何有效的MicrosoftSQLServer表达式。WHENwhen_expression使用简单CASE格式时input_expression所比较的简单表达式。When_expression是任意有效的SQLServer表达式。Input_expression
7、和每个when_expression的数据类型必须相同,或者是隐性转换。n占位符,表明可以使用多个WHENwhen_expressionTHENresult_expression子句或WHENBoolean_expressionTHENresult_expression子句。-2-http://www.paper.edu.cnTHENresult_expression当input_expression=when_expression取值为TRUE,或者Boolean_expression取值为TRUE时返回的表达式
此文档下载收益归作者所有