数据库存有学生id和学生分数grade,怎样用一条sql查询语句实现查询出结果:所有id为偶数的加10分,奇数的分数不变

昵称是可以中文吗 2012-10-22 09:55:09
数据库存有学生id和学生分数grade,怎样用一条sql查询语句实现查询出结果:所有id为偶数的加10分,奇数的分数不变
用一条语句可以解决吗?我用两条就会
...全文
535 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
TuTuchaochao 2012-10-29
  • 打赏
  • 举报
回复
select id,grade+case when grade%2=0
then 10
else 0
end as grade
from table_name;
coleling 2012-10-29
  • 打赏
  • 举报
回复
进来拜一下楼主的结贴率
xiaoxiangqing 2012-10-28
  • 打赏
  • 举报
回复
select id,case when id%2=0 then grade+10 else grade end as grade from yourtable
汤姆克鲁斯 2012-10-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 6 楼 的回复:
引用 3 楼 的回复:

SQL code
SELECT id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu

如果查询的参数除了ID,GRADE,还有很多个,能不能slect *, grade + CASE WHEN grade % 2 = 0 THEN……
[/Quote]
木有办法

只能手动把所有其他列写上去。
习惯性蹭分 2012-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
select id,case when id%2=0 then grade+10 else grade end as grade
from tablename
[/Quote]
+1
  • 打赏
  • 举报
回复
不是说ID为偶数的加10分么,为嘛都是Grade%2????
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:

引用 6 楼 的回复:
引用 3 楼 的回复:

SQL code
SELECT id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu

如果查询的参数除了ID,GRADE,还有很多个,能不能slect *, grade + CASE WHEN grade……
[/Quote]
噢噢,谢谢
ChangeMyself2012 2012-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:

SQL code
SELECT id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu

如果查询的参数除了ID,GRADE,还有很多个,能不能slect *, grade + CASE WHEN grade % 2 = 0 THEN 10 ELSE ……
[/Quote]

如果列实在很多,楼主可以考虑拼sql的方式。

if OBJECT_ID('A') is not null drop table A
create table A(id int,col1 nvarchar(1),col2 nvarchar(1),col3 nvarchar(1),col4 nvarchar(1),col5 nvarchar(1))

declare @columnList varchar(2000) --字段列集合字符串
select @columnList=isnull(@columnList+',','')+name from syscolumns where id=OBJECT_ID('A') and name<>'id'
--输出列名
print @columnList --拿着去拼查询语句
drop table A

  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 3 楼 的回复:

SQL code
SELECT id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu

如果查询的参数除了ID,GRADE,还有很多个,能不能slect *, grade + CASE WHEN grade % 2 = 0 THEN 10 ELSE 0 END ……
[/Quote]
select * 默认查询的是显示全部,请问如何用sql语句在select * 中隐藏显示字段为id这一列
  • 打赏
  • 举报
回复
但是我上面的写法,好像查询了两次grad,有没有办法只查询一次
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

SQL code
SELECT id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu
[/Quote]
如果查询的参数除了ID,GRADE,还有很多个,能不能slect *, grade + CASE WHEN grade % 2 = 0 THEN 10 ELSE 0 END AS grade
FROM stu
IEEE_China 2012-10-22
  • 打赏
  • 举报
回复
这是什么原因呢?看图

以学习为目的 2012-10-22
  • 打赏
  • 举报
回复
select  id,grade=case when grade%2=0 then grade+10 else grade end 
from tb
Mr_Nice 2012-10-22
  • 打赏
  • 举报
回复
SELECT  id ,
grade + CASE WHEN grade % 2 = 0 THEN 10
ELSE 0
END AS grade
FROM stu
Billy 2012-10-22
  • 打赏
  • 举报
回复
select id,case grade%2 when 0 then grade+10 else grade end as grade from stu
开启时代 2012-10-22
  • 打赏
  • 举报
回复
select id,case when id%2=0 then grade+10 else grade end as grade
from tablename

34,590

社区成员

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

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