2013-04-26 73 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;