2016-08-12 131 views
-1

我正尝试使用SQL Developer创建视图并遇到奇怪的错误。似乎有一个右括号缺失,但我找不到哪里 - 你能帮我吗?SQL缺少右括号

输入:

CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    (SELECT C.NOM, SUM(R.POINTS) AS POINTS 
    FROM MAST_CLUBS C 
    JOIN MAST_NAGEURS N USING(CLUB) 
    JOIN MAST_RESULTATS R USING(NRLIGUE) 
    GROUP BY (C.CLUB, C.NOM) 
    ORDER BY C.NOM); 

OUTPUT:

Erreur commençant à la ligne: 1 de la commande - 
CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    (SELECT C.NOM, SUM(R.POINTS) AS POINTS 
    FROM MAST_CLUBS C 
    JOIN MAST_NAGEURS N USING(CLUB) 
    JOIN MAST_RESULTATS R USING(NRLIGUE) 
    GROUP BY (C.CLUB, C.NOM) 
    ORDER BY C.NOM) 
Rapport d'erreur - 
Erreur SQL : ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 
*Cause:  
*Action: 

回答

0

只要避免使用不必要的括号:

CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    SELECT 
     C.NOM, 
     SUM(R.POINTS) AS POINTS 
    FROM 
     MAST_CLUBS C 
    JOIN 
     MAST_NAGEURS N 
     USING (CLUB) 
    JOIN 
     MAST_RESULTATS R 
     USING (NRLIGUE) 
    GROUP BY 
     C.CLUB, -- Is this intentional? It is not in your SELECT 
     C.NOM 
    ORDER BY NOM; 

有一个小窍门:让你的代码干净的布局,结构良好的帮助避免很多问题。

+0

该死的你是对的!我的意思是,说到你在评论中写的内容,我首先想到我应该在那里,因为它是主键,但它不应该:P我删除它,它解决了我的问题,非常感谢! –

+0

@AxelSamyn - 这是干净地构建代码的好处。 :-) – Nicarus

+0

@AxelSamyn - 你确定C.CLUB不应该在那里吗?没有它,你会得到所有俱乐部成员的总分(如果他或她属于多个) - 这对你的业务是否有意义?否则,您应该拥有C.CLUB,无论是在GROUP BY中还是在SELECT中都是**,那么您将通过成员和俱乐部组合获得积分总数(两个不同俱乐部成员的两排)。 – mathguy