还是那个select case的问题 不好意思

loveme_001 2008-04-04 09:08:07
各位朋友,我简单点说吧 这里我有一个表 cs(一个选课成绩表)
各个字段分别为:学生编号 课程编号 成绩 学期

我现在想用一条select语句选取 课程编号 成绩 课程绩点(这个东西就是我需要的)
这个课程绩点呢是这样运算的:
if(成绩<60)
课程绩点=0;
else
课程绩点=1+(成绩-60)/10;

请问我该如何写这样的select语句呢! 起最终结果如下:

课程编号 成绩 课程绩点
100 70 2
.
.
.
在线等!!谢谢大家!
之前我忘了说 那个课程绩点并不是表里的字段。
...全文
87 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
miaoyu04 2008-04-04
  • 打赏
  • 举报
回复
create table tb_Student
(ID int identity(1,1),
姓名 varchar(20),
课程 varchar(20),
成绩 varchar(20)
)

insert into tb_Student(姓名,课程,成绩) values('001','yingyu','60')
insert into tb_Student(姓名,课程,成绩) values('002','shuxue','50')
insert into tb_Student(姓名,课程,成绩) values('003','yingyu','80')
insert into tb_Student(姓名,课程,成绩) values('004','huaxue','70')

select ID,姓名,课程,成绩,绩点=case when 成绩<60 then 0 else 1+(成绩-60)/10 end from tb_Student

----
17 001 yingyu 60 1
18 002 shuxue 50 0
19 003 yingyu 80 3
20 004 huaxue 70 2

loveme_001 2008-04-04
  • 打赏
  • 举报
回复
感谢 Limpire 以及其他几位朋友 !
viva369 2008-04-04
  • 打赏
  • 举报
回复
高手真多~~
Limpire 2008-04-04
  • 打赏
  • 举报
回复
xfjd=credit*jd
-------------
不能直接引用jd:
xfjd=credit*(case when grade <60 then 0 else 1+(grade-60)/10 end)


FROM [cs],[course],[student]"
-------------
后面还需要联接条件和筛选条件
loveme_001 2008-04-04
  • 打赏
  • 举报
回复
那个jd 就是课程绩点哈 我这个是在 asp.net里面的一个语句,编译器给我说列名 jd 无效!
Limpire 2008-04-04
  • 打赏
  • 举报
回复
string cs_sql = "SELECT course.name AS course_name,credit,type,grade,jd=(case when grade<60 then 0 else 1+(grade-60)/10 end),xfjd=credit*(case when grade<60 then 0 else 1+(grade-60)/10 end) FROM [cs],[course],[student]"
loveme_001 2008-04-04
  • 打赏
  • 举报
回复
string cs_sql = "SELECT course.name AS course_name,credit,type,grade,jd=(case when grade <60 then 0 else 1+(grade-60)/10 end),xfjd=credit*jd FROM [cs],[course],[student]";

这是我写的 上面那个xfjd是课程学分 大家帮看看 有什么问题
Limpire 2008-04-04
  • 打赏
  • 举报
回复
--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (课程编号 int,成绩 int)
insert into #T
select 100,70 union all
select 101,60 union all
select 102,59

select 课程编号,成绩,课程绩点=case when 成绩<60 then 0 else 1+(成绩-60)/10 end from #T

/*
课程编号 成绩 课程绩点
----------- ----------- -----------
100 70 2
101 60 1
102 59 0
*/
-狙击手- 2008-04-04
  • 打赏
  • 举报
回复
select 课程编号,
成绩,
课程绩点 = case when 成绩 <60 then 0 else 1+(成绩-60)/10 end
from ta
viva369 2008-04-04
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080404/09/12040cff-0153-47ff-b76e-b9913eb0840d.html
Limpire 2008-04-04
  • 打赏
  • 举报
回复
--> 不行?

select 课程编号,成绩,课程绩点=case when 成绩 <60 then 0 else 1+(成绩-60)/10 end from cs

34,838

社区成员

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

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