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

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

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

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

课程编号 成绩 课程绩点
100 70 2
.
.
.
在线等!!谢谢大家!
之前我忘了说 那个课程绩点并不是表里的字段。
...全文
47 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-04 09:08
社区公告
暂无公告