。。。。这个应该怎么搞呢?

ankasim 2011-11-29 03:40:13
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 '一年级')


以上为昨天帖子的内容

我发现昨天得到的答案并不能很好的解决我提出的问题
我想有相同数据就取f_sign=1的数据
其他取为0的数据
在昨天的回复里都是只取sign为1的 可能是我表达的不清楚吧
我想在select的字段中不要再增加多余查询字段解决这个问题呢

可能是where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b') 与下面的条件会造成问题
where cbs.f_classguid in ('8faf1339009c47cfb62aa83c4ed6ed4b')
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 [sign]>ce.[sign]
)
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-11-29
  • 打赏
  • 举报
回复
既然你知道造成问题原因还有什么好说的。
--小F-- 2011-11-29
  • 打赏
  • 举报
回复
什么意思?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧