2009-12-07 6 views
2

코드 줄에 문제가 있습니다. 내가 만든 뷰에 대해 카운트 함수를 만들려고합니다. 나는 이것을 여러 가지 방법으로 다뤘지만, 최근에 사용한 형식이 아래에있다.'오른쪽 괄호 누락'오류의 원인을 찾을 수 없습니다.

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, COUNT(RIDERS) AS 
SELECT EVENTNAME, RACES.DESCRIPTION, 
     RIDERS_FIRSTNAME||' '||RTRIM(RIDERS_LASTNAME) 
FROM EVENTS, RACES, PARTICIPATION, RIDERS 
WHERE EVENTS.EVENTID = RACES.EVENTID 
AND RACES.RACEID = PARTICIPATION.RACEID 
AND RIDERS.RIDERID = PARTICIPATION.RIDERID 
ORDER BY RIDERS.RIDERS_LASTNAME, EVENTNAME; 

오류는 ORA-00907: missing right parenthesis입니다. 오류는 코드의 (COUNT(RIDERS) 부분에 있습니다. 이 아이디어를 어떻게 해결해야 할까?

답변

6

라인 (1)에 괄호 안의 이름리스트의 이름이어야 뷰 컬럼 :

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, COUNT(RIDERS) AS ... 

당신은 "COUNT (라이더"또는 "COUNT (라이더)"라는 열을 생성 할 수 없습니다) 열 이름이 포함되어 있지 않을 수 있습니다 이후 (또는. 이것은 작동 할 것이다 :

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, RIDER_FULL_NAME) AS ... 

그러나 내가 무엇이 확실하지는 않지만 실제로 무언가를 원한다. 뷰 정의가 무엇인가해야한다고하려면 :

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, RIDER_COUNT) AS 
SELECT EVENTNAME, RACES.DESCRIPTION, COUNT(*) 
FROM EVENTS, RACES, PARTICIPATION, RIDERS 
WHERE EVENTS.EVENTID = RACES.EVENTID 
AND RACES.RACEID = PARTICIPATION.RACEID 
AND RIDERS.RIDERID = PARTICIPATION.RIDERID 
GROUP BY EVENTNAME, DESCRIPTION; 

(즉, COUNT 함수는 열이 아닌 이름의 목록에서 SELECT 부분에 간다). 여담으로

, 당신이 오라클에 아마도 새로운이기 때문에, 나는 당신이 당신의 쿼리를 명확하게하기 위해 현대 ANSI JOIN 구문을 사용하여 시작 제안 : 토니 실제로 여러 구문가 지적 하듯이

... 
FROM EVENTS 
JOIN RACES ON RACES.EVENTID = EVENTS.EVENTID 
JOIN PARTICIPATION ON PARTICIPATION.RACEID = RACES.RACEID 
JOIN RIDERS ON RIDERS.RIDERID = PARTICIPATION.RIDERID 
+0

+1 완전한 대답을 위해 나를 때려 눕히십시오. – APC

+0

나는 여전히 뭔가 잘못하고 있다고 가정합니다 ... ORA-00937 : 단일 그룹 그룹 함수가 아니라 사용하는 코드가 오류입니다 .. CREATE VIEW ERP_REPORT (EVENTNAME, DESCRIPTION, RIDER_COUNT) SELECT EVENTNAME, RACES.DESCRIPTION, COUNT (RIDERS_LASTNAME) EVENTS 인종, 참여 RIDERS FROM AS WHERE EVENTS.EVENTID = RACES.EVENTID AND RACES.RACEID = PARTICIPATION.RACEID AND RIDERS.RIDERID = PARTICIPATION.RIDERID; 이벤트 이름, 설명; – Michael

+0

나는 여전히 뭔가 잘못하고 있다고 가정합니다 ... ORA-00937 : 단일 그룹 그룹 기능이 아니라 사용하고있는 코드의 오류가 있습니다 ... CREATE VIEW ERP_REPORT (EVENTNAME, DESCRIPTION, RIDER_COUNT)) EVENTNAME, RACES.DESCRIPTION, 이벤트 (RIDERS_LASTNAME)에서 이벤트, RACES, 참가자, RIDERS 어디 EVENTS.EVENTID = RACES.EVENTID 및 RACES.RACEID = PARTICIPATION.RACEID 및 RIDERS.RIDERID = PARTICIPATION.RIDERID; EVENTNAME, DESCRIPTION에 의한 주문; – Michael

1
CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, COUNT(RIDERS) AS 

....

그것이 있어야하지 :

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, COUNT(RIDERS)) AS 
1

오류 메시지가 당신이 닫는 대괄호 누락 지적 하듯이). 'ERP_REPORT (EVENTNAME'와 폐쇄되지 않습니다 당신이 주변에 인용 부호를 넣어하지 않는 한 열 이름에 괄호를 가질 수 없습니다

+4

오 마이 갓! 오류 메시지가 맞습니까? 누가 이런일이 일어날 거라고 생각 했 겠어! –

1

이 시도 : 브래킷은 여기에서 열립니다..

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, "COUNT(RIDERS)") AS ... 

또는

CREATE VIEW ERP_REPORT(EVENTNAME, DESCRIPTION, COUNT_RIDERS) AS ... 

예 :

SQL> CREATE OR REPLACE VIEW foo ("count(*)") AS SELECT COUNT(*) FROM dual; 

View created 

SQL> CREATE OR REPLACE VIEW foo (count_all) AS SELECT COUNT(*) FROM dual; 

View created 
+0

Vencent 나는 이것을 시도했지만 Count_Riders 열을 계산할 때만 가져올 수 있었고 나머지 열은 표시하지 않았습니다. – Michael

+0

@Michael : 당신이'SELECT * FROM erp_report'를 쿼리 할 때 당신은 하나의 컬럼 만 볼 수 있다는 것을 의미합니까? –

+0

네, SELECT * erp_report............................................이 지시에 따라 제대로하지 않았을 수 있습니다.나는 당신이 제공 한 당신을 다시 그것을 실행할 것입니다. 나는 두 번째 옵션을 사용할 것입니다. 두 개의 별도 코드 세트를 실행하십시오. – Michael

1

진술의 오류. 누락 된 괄호는 첫 번째 것입니다.

브래킷 일치를 지원하는 IDE를 사용하는 것이 유용하다는 것을 알았습니다. 코드를 뒤적 거리며 동료가없는 브래킷을 찾기가 어려울 수 있기 때문입니다. 그것이 발생하면 내 선택은 TextPad이지만, 메모장보다 더 진보 된 것은 무엇이든 할 수 있어야합니다.

+0

+1 for TextPad! –

관련 문제