下面是完整的排队,当我删除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;
答案 0 :(得分:0)
Oracle(以及大多数其他数据库)使用双引号作为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;