请问我这样的SQL语句怎么写?

wz_zj_woniu 2002-01-31 07:57:47
原表:
姓名 学期 成绩1 成绩2 成绩3 成绩4
aa 1 60 67 74 2
bb 2 56 1 49 90
cc 5 70 1 2 80
dd 5 59 4 1 79
ee 5 61 2 3 1
想实现先找到‘学期’=5的全部纪录,再看后面的‘成绩1’--‘成绩4’各字段值如果<=5,就把成绩1’--‘成绩4’各字段值由正数变成负数,即:
姓名 学期 成绩1 成绩2 成绩3 成绩4
aa 1 60 67 74 2
bb 2 56 1 49 90
cc 5 70 -1 -2 80
dd 5 59 -4 -1 79
ee 5 61 -2 -3 -1
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wz_zj_woniu 2002-02-14
  • 打赏
  • 举报
回复
g
gothing 2002-02-01
  • 打赏
  • 举报
回复
Haiwer(海阔天空)漏了一句:from tablename在“where 学期 =5”前
昵称被占用了 2002-02-01
  • 打赏
  • 举报
回复
谢谢gothing() 更正!
wz_zj_woniu 2002-01-31
  • 打赏
  • 举报
回复
不行,显示操作符丢失,在b.成绩4。
蓝天 2002-01-31
  • 打赏
  • 举报
回复
子查询
wz_zj_woniu 2002-01-31
  • 打赏
  • 举报
回复
这里的a和b是不是两个虚拟的表。
昵称被占用了 2002-01-31
  • 打赏
  • 举报
回复
update tablename
set 成绩1=b.成绩1,
成绩2=b.成绩2,
成绩3=b.成绩3,
成绩4=b.成绩4
from tablename a,
(
select 姓名,学期,成绩1=case when 成绩1<=5 then -成绩1 else 成绩1 end,
成绩2=case when 成绩2<=5 then -成绩2 else 成绩2 end,
成绩3=case when 成绩3<=5 then -成绩3 else 成绩3 end,
成绩4=case when 成绩4<=5 then -成绩4 else 成绩4 end
where 学期 =5
) as b
where a.姓名=b.姓名
and a.学期=b.学期
昵称被占用了 2002-01-31
  • 打赏
  • 举报
回复
以上错误!
昵称被占用了 2002-01-31
  • 打赏
  • 举报
回复
update tablename
set 成绩1=case when 成绩1<=5 then -成绩1 else 成绩1,
成绩2=case when 成绩2<=5 then -成绩2 else 成绩2,
成绩3=case when 成绩3<=5 then -成绩3 else 成绩3,
成绩4=case when 成绩4<=5 then -成绩4 else 成绩4
where 学期 =5

11,849

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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