0

下面是完整的查询,当我删除grade =“a”时它工作正常,为什么这会导致它出错?

我收到错误 ORA-00904: "A": invalid identifier

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;
4

1 回答 1

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;
于 2013-04-26T00:47:43.013 回答