2013-04-26 75 views
0

下面是完整的queory,当我删除grade =“a”时它工作正常,为什么这会导致它出错?为什么这个地方的声明不起作用?

我得到错误ORA-00904: “A”:无效的标识符

select count(grade), dw_course_sect.roomID 
from dw_course_facts, dw_course_sect 
where (dw_course_facts.coursekey = dw_course_sect.coursekey) and 
     (dw_course_facts.grade = "A") 
group by dw_course_sect.roomID; 
+1

尝试单引号 – Sebas 2013-04-26 00:23:55

+3

可能需要用单引号括起来,例如: 'dw_course_facts.grade ='A'' – nkvu 2013-04-26 00:24:22

+0

单引号!简单的事情让我很开心。多谢你们! – user2317112 2013-04-26 00:25:39

回答

0

甲骨文(以及大多数其他数据库)使用双引号作为分隔符在SQL名称。如果您的列名具有空格,例如Column Name,那么您将编写select "Column Name" . . .

当您编写"A"时,Oracle正在寻找一个具有该名称的命名对象 - 一个名为“A”的列。没有。

你想单引号。但是,你也应该使用标准的连接语法。查询应该如下所示:

select count(grade), dw_course_sect.roomID 
from dw_course_fact join 
    dw_course_sect 
    on dw_course_facts.coursekey = dw_course_sect.coursekey 
where dw_course_facts.grade = 'A' 
group by dw_course_sect.roomID;