0

以下は完全なクエリです。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;
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 に答える