-
最近项目报表开发中写的存储过程学生综合成绩对比
成绩综合对比
CREATE PROCEDURE select_IntegratedMarkContrastByTime
@semester varchar(50),
@grade varchar(50),
@tSubject_id int,
@achievementName varchar(500)
AS
BEGIN
SET NOCOUNT ON
---------------创建临时表-------------------------------------------------------------------
create table #tb
(
tempId int identity(1,1),
年级统考 varchar(50),
平均分 decimal(10,2),
最高平均分班级 varchar(50),
最高平均分 decimal(10,2),
最高平均分年级平均分差值 decimal(10,2),
最低平均分班级 varchar(50),
最低平均分 decimal(10,2),
最低平均分年级平均分差值 decimal(10,2),
最高平均分最低平均分差值 decimal(10,2)
)
declare @next int --定义循环步长变量
set @next=1
-------------------------以下为循环--------------------------------------------
while @next<=dbo.Get_StrArrayLength(@semester,',')
begin
---------------------定义变量@sqlShare,并赋值----------------------------------
declare @sqlShare varchar(8000)
set @sqlShare='select 学年+学期+年级+achievementName as 年级统考,班级,cast(avg(scoreNumber) as decimal(10,2)) as 平均分
from dbo.aAchievementMarkWithTeacherView where (achievementName='''+dbo.Get_StrArrayStrOfIndex(@achievementName,',',@next)
+''' and semester_id='+ dbo.Get_StrArrayStrOfIndex(@semester,',',@next)
+' and grade_id='+ dbo.Get_StrArrayStrOfIndex(@grade,',',@next)
+' and tSubject_id='+cast(@tSubject_id as varchar(50))+')
group by semester_id,grade_id,学年,学期,年级,achievementName,class_id,班级'
---------------------定义变量@sqlstr,并赋值---------------------------------
declare @sqlstr varchar(8000)
set @sqlstr=' insert into #tb select 年级统考,cast(avg(平均分) as decimal(10,2)) as 年级平均,
(select top 1 班级 from ('
+@sqlShare
+') as b where b.平均分=(select max(平均分) from ('
+@sqlShare
+') as a group by 年级统考)) as 最高平均分班级,
max(平均分) as 最高平均分,
max(平均分)-cast(avg(平均分) as decimal(10,2)) as''最高平均分-年级平均分'',
(select top 1 班级 from ('
+@sqlShare
+') as b where b.平均分=(select min(平均分) from ('
+@sqlShare
+') as a group by 年级统考)) as 最低平均分班级,
min(平均分) as 最低平均分,
cast(avg(平均分) as decimal(10,2))-min(平均分) as ''最低平均分-年级平均分'',
max(平均分)-min(平均分) as ''最高平均分-最低平均分''
from ('
+@sqlShare
+') as newTable group by 年级统考'
exec (@sqlstr)
set @next=@next+1
end
-------------结束循环-----------------------------------------------------------------------
select * from #tb--查询临时表中数据
drop table #tb--删除临时表
END
GO
-
相关阅读:
【好用的工具】gif录屏工具
【图文教程】WebStorm下使用Github下载以及上传代码
【交互】几款优秀的H5输入框交互方案
【CSS】before和:after实例——CSS3画桃心
List字符串和数字用Collections.sort排序
MySQL之CONCAT,CONCAT_WS,GROUP_CONCAT
连接非本地MySQL数据库,报1130错误的解决方法
好用的网站整理
linux基础
字符编码
-
原文地址:https://www.cnblogs.com/xnxylf/p/1334834.html
Copyright © 2020-2023
润新知