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 に答える