当前位置: 代码迷 >> Oracle管理 >> 写一个查询语句?该怎么处理
  详细解决方案

写一个查询语句?该怎么处理

热度:88   发布时间:2016-04-24 05:39:56.0
写一个查询语句?
有一个学生成绩表,里面有各科的成绩,现在请查询并显示出学生姓名,科目名,及其学科状态(score>80[优秀],60<score<80[及格],score<60[不及格])。

------解决方案--------------------
select 学生姓名,(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格') as 英语,
from table

------解决方案--------------------
SQL code
select 学生姓名,科目名,case when score>=80 then '优秀'when score>=60 and score<80 then '及格'else '不及格' end as 学科状态from 学生成绩表
------解决方案--------------------
select 学生姓名,科目名,
(case when score>80 then '优秀' when score>=60 and score<80 then '及格'
else '不及格' end) as 学科状态 from 学生成绩表
------解决方案--------------------
decode函数
或者case when
------解决方案--------------------
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) 比较简洁
------解决方案--------------------
目前认为表结构为(学生姓名,课程名,成绩)
参考代码如下:
SQL code
SELECT 学生姓名,科目名,(CASE WHEN 成绩>80 THEN '优秀'       WHEN 成绩>=60 AND 成绩<80 THEN '及格'      ELSE '不及格' END) as 学科状态FROM 表名;
------解决方案--------------------
探讨

目前认为表结构为(学生姓名,课程名,成绩)
参考代码如下:
SQL code

SELECT 学生姓名,科目名,
(CASE WHEN 成绩>80 THEN '优秀'
WHEN 成绩>=60 AND 成绩<80 THEN '及格'
ELSE '不及格' END) as 学科状态
FROM 表名;



注意:不能使decode,因为decode无法判断范围,它……
  相关解决方案