2016-10-02 56 views
2

我是Oracle SQL的新手,對於我來說,我無法弄清楚爲什麼我繼續在代碼中出現錯誤「缺少右括號」。我尋找失蹤或額外的逗號和括號,但無法弄清楚。請幫助!我的查詢是下面:在Oracle中創建虛擬視圖時的錯誤代碼

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; 

回答

3

您與EXTRACT()功能的幫助下提取的TIME_ID錯誤值。

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函數的參數不正確,並把它作爲一個table.The語法檢查器的列對待語句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 

詳情:Extract