Oracle SQL Moderatly复杂案例查询

时间:2011-12-08 00:24:31

标签: sql oracle10g case

以下是我的问题:列出出版图书数量最多的title_id,pubdate和月份名称(例如“May”)。 我在Oracle 10g express上。 这是我的疑问:

       SELECT count(EXTRACT(MONTH FROM pubdate)), title_id  
       CASE EXTRACT(MONTH FROM pubdate)
 WHEN 2 THEN 'February'
 WHEN 3 THEN 'March'
 WHEN 4 THEN 'April'
 WHEN 5 THEN 'May'
 WHEN 6 THEN 'June'
 WHEN 7 THEN 'July'
 WHEN 8 THEN 'August'
 WHEN 9 THEN 'September'
 WHEN 10 THEN 'October'
 WHEN 11 THEN 'November'
 WHEN 12 THEN 'December'
END 
  FROM titles t, publishers p 
  WHERE t.pub_id=p.pub_id 
  AND pubdate in 
(select max(EXTRACT(MONTH FROM pubdate)) from titles group by t.title_id)
GROUP BY t.title_id 
ORDER BY count(EXTRACT(MONTH FROM pubdate));

在Oracle中,它告诉我预期找不到FROM关键字。任何专家都可以看看这个并告诉我哪里错了?

1 个答案:

答案 0 :(得分:1)

您错过了title_id and Case

之间的逗号
SELECT count(EXTRACT(MONTH FROM pubdate)), title_id , <----- comma needs to be here
       CASE EXTRACT(MONTH FROM pubdate)
 WHEN 2 THEN 'February'
 WHEN 3 THEN 'March'
 WHEN 4 THEN 'April'
 WHEN 5 THEN 'May'
 WHEN 6 THEN 'June'
 WHEN 7 THEN 'July'
 WHEN 8 THEN 'August'
 WHEN 9 THEN 'September'
 WHEN 10 THEN 'October'
 WHEN 11 THEN 'November'
 WHEN 12 THEN 'December'
END 

有趣的是,如果您使用Instant SQL Formatter

您收到了更好的错误消息

  

EXTRACT(2,13)预期令牌:。 ),FROM INTO