2

我是 Oracle SQL 的新手,在我的一生中,我无法弄清楚为什么我的代码继续出现错误“缺少右括号”。我一直在寻找缺少或多余的逗号和括号,但无法弄清楚。请帮忙!我的查询如下:

CREATE VIEW PRODUCT_SUMMARY_V 
AS SELECT 
PROD_ID, 
EXTRACT (CALENDAR_YEAR FROM TIME_ID) "YEAR", 
EXTRACT (CALENDAR_MONTH_NAME FROM TIME_ID) "MONTH",  
SUM(AMOUNT_SOLD) "TOTAL_AMOUNT_SOLD", 
SUM(QUANTITY_SOLD) "TOTAL_QUANTITY_SOLD",
ROUND(SUM(AMOUNT_SOLD)/SUM(QUANTITY_SOLD),2) "AVG_SALE_PRICE"
FROM MY_SALES
GROUP BY PROD_ID, CALENDAR_YEAR, CALENDAR_MONTH_NAME
ORDER BY PROD_ID;
4

1 回答 1

3

TIME_ID您在函数的帮助下从 中提取了错误的值EXTRACT()

  SQL> CREATE VIEW PRODUCT_SUMMARY_V 
  AS SELECT 
  PROD_ID, 
  EXTRACT (YEAR FROM TIME_ID) "YEAR", 
  EXTRACT (MONTH FROM TIME_ID) "MONTH",  
  SUM(AMOUNT_SOLD) "TOTAL_AMOUNT_SOLD", 
  SUM(QUANTITY_SOLD) "TOTAL_QUANTITY_SOLD",
  ROUND(SUM(AMOUNT_SOLD)/ SUM(QUANTITY_SOLD),2) "AVG_SALE_PRICE"
  FROM MY_SALES
  GROUP BY PROD_ID, EXTRACT (YEAR FROM TIME_ID), EXTRACT (MONTH FROM TIME_ID)
  ORDER BY PROD_ID;  

 View created.

但是,错误消息具有误导性,因为EXTRACT函数的参数不正确,并将其视为表的列。语法检查器将语句视为SELECT EXTRACT(CALENDAR_YEAR FROM TIME_ID.

SQL> SELECT EXTRACT(CALENDAR_YEAR FROM TIME_ID;
SELECT EXTRACT(CALENDAR_YEAR FROM TIME_ID
                             *
ERROR at line 1:
ORA-00907: missing right parenthesis

详情:提取

于 2016-10-02T02:48:12.057 回答