数据库SQL的查询操作,查询结果增加2列用户自定义的逻辑

一个数据表有3个字段S(id,SName,Score)idSnamescore1小王902小2703小3704小4405小530经过查询显示出snamescoremark... 一个数据表有3个字段S(id,SName,Score)
id Sname score
1 小王 90
2 小2 70
3 小3 70
4 小4 40
5 小5 30

经过查询显示出
sname score mark rank
小王 90 pass 1
小2 70 pass 2
小3 70 pass 2
小4 40 fail 3
小5 30 fail 4
如何实现这个功能?
补充一下 是MS数据库
展开
 我来答
flyingFish211
2011-01-06 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
什么数据库?

ORACLE /DB2
SELECT Sname, score,
CASE WHEN score > 60 THEN 'pass' ELSE 'fail' END AS mark,
DENSE_RANK() OVER(ORDER BY score DESC) AS rank
FROM S

其他的可以用这个
SELECT Sname, score,
CASE WHEN score > 60 THEN 'pass' ELSE 'fail' END AS mark,
(SELECT count(DISTINCT score)+1 FROM S WHERE score > t.score) AS rank
FROM S t

MS 2005以上可以尝试上面那个,如果不行,就用下面这个通用的肯定可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clchun
2011-01-06
知道答主
回答量:4
采纳率:0%
帮助的人:3.1万
展开全部
select sname,score, (case when score>=60 then 'pass' else 'fail' end) as mark,
(case when score>=90 then 1
when score>=70 then 2
when case score>=40 then 3
when score>=30 then 4 end) as rank
from tab
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式