SQL求助 谢谢呢~
时间:2011-11-27
来源:互联网
select tstu.f_code+ ':' +tstu.f_strrealname as '学号:姓名',ce.f_examname2 as 考试名称,cast(cbs.f_subject01 as decimal(15,2)) as 语文,cast(cbs.f_subject02 as decimal(15,2)) as 数学,cast(cbs.f_subject03 as decimal(15,2)) as 英语 from C_BasicScore as cbs left join C_Exam as ce on ce.f_guid=cbs.f_examguid left join t_student as tstu on tstu.f_guid=cbs.f_stuguid where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b') order by tstu.f_code,ce.f_examname2
C_BasicScore 分数表
C_Exam 考试表
t_student 学生表
需求是这样的
有中心端和学校端2个地方可以建立考试
如学校端建立了2011-2012 一年级 第一学期 期中考试 (C_Exam 表中sign字段存为0)
中心端也建立了同一场考试 2011-2012 一年级 第一学期 期中考试(C_Exam 表中sign字段存为1)
以上2场考试重复建立
那么就取中心端的那场考试,即C_Exam 表中sign字段为1的考试
在C_Exam 中可以判断为同一场考试的字段有F_TermGUID(学期ID ‘2011-2012’)、F_ExamTypeGUID(考试类型 '期中考试')、
F_GradeGUID(年级ID '一年级')
作者: ankasim 发布时间: 2011-11-27
怎样区分是学校还是中心端建的
你是查询过滤重复,还是更新
那么就取中心端的那场考试,即C_Exam 表中sign字段为1的考试
作者: roy_88 发布时间: 2011-11-27
select tstu.f_code+ ':' +tstu.f_strrealname as '学号:姓名', ce.f_examname2 as 考试名称, cast(cbs.f_subject01 as decimal(15,2)) as 语文, cast(cbs.f_subject02 as decimal(15,2)) as 数学, cast(cbs.f_subject03 as decimal(15,2)) as 英语 from C_BasicScore as cbs left join C_Exam as ce on ce.f_guid=cbs.f_examguid and not exists(select 1 from C_Exam where F_TermGUID=ce.F_TermGUID and F_ExamTypeGUID=ce.F_ExamTypeGUID and F_GradeGUID=ce.F_GradeGUID and cast([sign] as int) > CAST(ce.[SIGN] as int)) left join t_student as tstu on tstu.f_guid=cbs.f_stuguid where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b') order by tstu.f_code,ce.f_examname2
作者: roy_88 发布时间: 2011-11-27
select * from (select tstu.f_code+ ':' +tstu.f_strrealname as '学号:姓名', ce.f_examname2 as 考试名称,cast(cbs.f_subject01 as decimal(15,2)) as 语文, cast(cbs.f_subject02 as decimal(15,2)) as 数学,cast(cbs.f_subject03 as decimal(15,2)) as 英语, no=row_number() over(partition by ce.F_TermGUID,ce.F_ExamTypeGUID,ce.F_GradeGUID order by ce.sign desc) from C_BasicScore as cbs left join C_Exam as ce on ce.f_guid=cbs.f_examguid left join t_student as tstu on tstu.f_guid=cbs.f_stuguid where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b')) t where no=1
作者: ssp2009 发布时间: 2011-11-27
SQL code
select tstu.f_code+ ':' +tstu.f_strrealname as '学号:姓名', ce.f_examname2 as 考试名称, cast(cbs.f_subject01 as decimal(15,2)) as 语文, cast(cbs.f_subject02 as decimal(15,2)) as 数学, cast(cbs.f_subject03 as decimal(15,2)) as 英语 from C_BasicScore as cbs left join C_Exam as ce on ce.f_guid=cbs.f_examguid and cast([sign] as int)=(select max(cast([sign] as int)) from C_Exam where F_TermGUID=ce.F_TermGUID and F_ExamTypeGUID=ce.F_ExamTypeGUID and F_GradeGUID=ce.F_GradeGUID ) left join t_student as tstu on tstu.f_guid=cbs.f_stuguid where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b') order by tstu.f_code,ce.f_examname2
作者: roy_88 发布时间: 2011-11-27
select tstu.f_code+ ':' +tstu.f_strrealname as '学号:姓名', ce.f_examname2 as 考试名称, cast(cbs.f_subject01 as decimal(15,2)) as 语文, cast(cbs.f_subject02 as decimal(15,2)) as 数学, cast(cbs.f_subject03 as decimal(15,2)) as 英语 from C_BasicScore as cbs left join C_Exam as ce on ce.f_guid=cbs.f_examguid left join t_student as tstu on tstu.f_guid=cbs.f_stuguid where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b') and not exists( --增加一个判断条件,当C_Exam表中相同F_TermGUID、F_ExamTypeGUID、F_GradeGUID时,取sign最大的那个(即1) select 1 from C_Exam where F_TermGUID=ce.F_TermGUID and F_ExamTypeGUID=ce.F_ExamTypeGUID and F_GradeGUID=ce.F_GradeGUID and [sign]>ce.[sign] ) order by tstu.f_code,ce.f_examname2
作者: qianjin036a 发布时间: 2011-11-27
[sign]*1=(select max([sign]*1)
作者: roy_88 发布时间: 2011-11-27
作者: qianjin036a 发布时间: 2011-11-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28