2016-10-02 2 views
2

Je suis nouveau à Oracle SQL, et pour la vie de moi je ne comprends pas pourquoi je continue d'obtenir l'erreur "parenthèse droite manquante" sur mon code. J'ai cherché des virgules manquantes ou supplémentaires et des parenthèses mais je n'arrive pas à le comprendre. Aidez-moi, s'il vous plaît! Ma requête est la suivante:code d'erreur lors de la création d'une vue virtuelle dans 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; 

Répondre

3

vous extrayez une valeur incorrecte de la TIME_ID avec l'aide de la fonction 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. 

Cependant, le message d'erreur est trompeur car le paramètre de la fonction EXTRACT est incorrecte et il le traite comme la colonne d'une syntaxe de table.Le vérificateur traite la déclaration 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 

Pour plus de détails: Extract