#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
Для получения подробной информации: Выписка