код ошибки при создании виртуального представления в Oracle

#oracle #oracle-sqldeveloper #create-view

#Oracle #oracle-sqldeveloper #создать-просмотр

Вопрос:

Я новичок в 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;
  

Ответ №1:

Вы извлекаете неправильное значение из 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
  

Для получения подробной информации: Выписка