【发布时间】:2015-01-02 01:08:59
【问题描述】:
我正在尝试创建一个简单的查询,它将当前包含值 0、1、2、3、4、5 的评分/评估列转换为 Terrible、Poor、Bad、Mediocre 和 Good。但正如您所见,标签值只有 5 个,而数字值只有 6 个。
所以数字 5 需要显示为 5,而所有其他数字将变成它们各自的标签(可怕、差等)。
我目前的查询如下:
SELECT course_id,
student_id,
CASE eval
WHEN 0 THEN 'Terrible'
WHEN 1 THEN 'Bad'
WHEN 2 THEN 'Mediocre'
WHEN 3 THEN 'Fair'
WHEN 4 THEN 'Good'
END
FROM booking;
在以下查询结果中,我知道标记为10121 的COURSE_ID 的评估值为5
所有其他的都是空的,所以它们是空白的很好。但是10121 需要显示为5。
如果我尝试应用ELSE 语句来返回原始值(通过执行inner select 语句),它会显示ERROR at line 9: ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
COURSE_ID STUDENT_ID CASEEVAL
---------- ---------- --------
10111 10235000 Good
10111 10285858 Fair
10112 10288497
10112 10092464 Fair
10113 10235000
10114 10128018 Terrible
10114 10288497
10115 10092464 Terrible
10115 10128018 Bad
10116 10128018
10118 10288497 Bad
10118 10836444 Fair
10119 10285858
10120 10412445 Mediocre
10121 10836444
10122 10285858 Good
10123 10412445 Mediocre
10125 10095146
【问题讨论】:
-
Oracle != MySQL,我修复了你的标签。
-
这是case EXPRESSION,不是case语句...