有这样三个数据表: A表示学生表(学号,姓名,班级);B表示课程表(课程编号,课程名称),C表示成绩表(学号,课程编号,分数)。现问题如下要检索“计算机原理”这个课程成绩并将成绩划分成四个等级:低于60分者为“差”,大于或等于60而低于75分者为“中”,大于或等于75而低于85者为“良”,大于或等于85分者为优,其他情况判为“无成绩”。请写出它的SQL语句
解决方案 »
- 高手解决这个触发器者有奖,快来看看
- 求一SQL?
- 试图的问题
- exec前为什么不能加命令?
- 谁能帮帮我:我用的ASP怎么连不上SQL数据库呀
- 帮忙改下SQL语句
- 存储过程输出参数问题?
- TCP 提供程序: 指定的网络名不再可用。Sqlcmd: 错误: Microsoft SQL Native Client : 通讯链接失败。
- 有没办法使某一个数据项触发另一项数据项
- 有关临时表的问题:我在sql server的storedproc中创建一临时表,可在asp中却找不到!
- 存储过程-SQL语句的CASE语句怎么用???在线等
- 将 expression 转换为数据类型 tinyint 时发生算术溢出错误。
A.姓名,A,班级,
case when C.分数 is null then '无成绩'
when C.分数>=85 then '优'
when C.分数>=75 then '良'
when C.分数>=60 then '中'
else '差'
end as 成绩
from
A
cross join
(select 课程编号 from B where 课程名称='计算机原理') D
left join
C
on
A.学号=C.学号 and D.课程编号=C.课程编号
级别=
ISNULL(SELECT TOP 1 级别 FROM
(
SELECT 0 分数,'差' 级别
UNION SELECT 60,'中'
UNION SELECT 75,'良'
UNION SELECT 85,'优'
) g
WHERE g.分数<=c.分数
ORDER BY g.分数 DESC
),'无成绩')
FROM a
INNER JOIN c ON a.学号=a.学号
INNER JOIN b ON c.课程编号=b.谭程编号