ORA-01787: 질의 블록당 1개의 구만 허용됩니다 해결하기 (ORA-01787: only one clause allowed per query block)

ORA-01787: only one clause allowed per query block 오류는 번역 과정에서 "1개의 구(phrase)만 허용"된다고 표시를 해놓았는데 "1개의 절(clause)만 허용됩니다."라는 의미가 더 적합해 보입니다.

ORA-01787 오류는 안내하는 바와 같이 쿼리블록에서 WHERE, GROUP BY, CONNECT BY, HAVING 등의 절이 2번 이상 사용되어 발생합니다. GROUP 부분을 점검하시면 바로 문제를 찾을 수 있을 것입니다. 다음은 해당 오류가 발생하는 예제 자료입니다.

ORA-01787: 질의 블록당 1개의 구만 허용됩니다 해결하기

ORA-01787: 질의 블록당 1개의 구만 허용됩니다 GROUP BY로 발생하는 경우

GROUP BY 절을 2번 사용하는 경우에 발생할 수 있습니다.

SELECT COLUMN_NAME
         FROM TABLE_NAME
     GROUP BY COLUMN_NAME
     GROUP BY COLUMN_NAME;

4행에 오류:
ORA-01787: 질의 블록당 1개의 구만 허용됩니다

ORA-01787: 질의 블록당 1개의 구만 허용됩니다 HAVING으로 발생하는 경우

HAVING 절을 2번 사용하여 ORA-01787 오류가 발생하였습니다.

SELECT COLUMN_NAME
         FROM TABLE_NAME
     GROUP BY COLUMN_NAME
       HAVING COLUMN_NAME = 'B'
       HAVING COLUMN_NAME = 'B';
  
5행에 오류:
ORA-01787: 질의 블록당 1개의 구만 허용됩니다

댓글