変な構文で ORA-00907 のエラーになった話。

昨日書いた、壊れたSQLの続きなのですが。

DatabaseError: ORA-00907: missing right parenthesis
日本語に直すと「右カッコがありません」なんですが、SQLを見ても、括弧は足りているし、右と左の数も一致している。

んで、良く見たら、やっぱり括弧内の構文が間違えていました。

count(distinct dat end)

case whenを削ったときに、endを除外し忘れていた、と。
恐らく「次に括弧が来るはずなんだけどなー、 来ないなー。
っていう意味なんでしょう。

正直、ミスリードするよりもSQLが構文的におかしいぜ、って言ってくれた方が良いのですが、
まあそう読み替えればいいのか。


参考:
http://blog.mukairiku.net/2014/04/oracle%E3%81%AF%E3%82%AB%E3%83%83%E3%82%B3%E3%81%8C%E3%81%82%E3%81%A3%E3%81%A6%E3%82%82-ora-00907-%E5%8F%B3%E3%82%AB%E3%83%83%E3%82%B3%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93.html