ORA-00957: 열명이 중복되었습니다 (ORA-00957: duplicate column name)

ORA-00957: 열명이 중복되었습니다 오류는 테이블 또는 뷰 생성 시 컬럼명이 중복되었을 때 발생합니다. 원인은 크게 다음과 같습니다.

  • 컬럼 개수가 많은 테이블에 추가로 동일한 이름의 컬럼을 추가하는 경우
  • 외래키를 동일한 컬럼명으로 사용 시 해당 두 테이블을 조인하여 테이블 및 뷰를 생성하는 경우

ORA-00957: 열명이 중복되었습니다

다음은 똑같은 컬럼명을 사용하여 오류가 발생하는 예제 자료입니다. column_name_1 컬럼명이 중복되어 발생합니다.

CREATE TABLE TABLE_NAME
     (
        COLUMN_NAME_1   VARCHAR2 (100),
        COLUMN_NAME_2   VARCHAR2 (100),
        COLUMN_NAME_3   VARCHAR2 (100),
        COLUMN_NAME_4   VARCHAR2 (100),
        COLUMN_NAME_1   VARCHAR2 (100)
     );

COLUMN_NAME_1   VARCHAR2 (100)
   *
ERROR at line 7:
ORA-00957: duplicate column name

ORA-00957: 열명이 중복되었습니다

emp(사원정보) 테이블과 dept(부서정보) 테이블 간의 외래키는 deptno(부서번호) 컬럼이며, 해당 두 테이블 모두 각각 deptno컬럼을 같은 이름으로 가지고 있습니다. 즉, emp테이블에도 deptno가 있고, dept테이블에도 deptno가 있습니다.

이때 emp테이블과 dept테이블을 조인하여 emp.deptno와 dept.deptno을 모두 조회하는 상황을 가정해 봅시다. 중복된 컬럼을 조회하는 예제는 다음과 같으며 SELECT 컬럼명은 애플리케이션 툴에 따라 deptno, deptno로 보이기도 하고 deptno, deptno_1과 같은 식으로 보이기도 합니다. sqlplus는 동일한 컬럼 이름을 표시해 드립니다.

SELECT EMPNO,
               ENAME,
               EMP.DEPTNO,
               DEPT.DEPTNO
          FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO = EMP.DEPTNO;

     EMPNO ENAME                    DEPTNO     DEPTNO
---------- -------------------- ---------- ----------
      7839 KING                         10         10
      7698 BLAKE                        30         30
      7782 CLARK                        10         10
      7566 JONES                        20         20
      7654 MARTIN                       30         30
      7499 ALLEN                        30         30
      7844 TURNER                       30         30
      7900 JAMES                        30         30
      7521 WARD                         30         30
      7902 FORD                         20         20
      7369 SMITH                        20         20
      7788 SCOTT                        20         20
      7876 ADAMS                        20         20
      7934 MILLER                       10         10

14 rows selected.

이렇게 컬럼이 중복된 상태에서 테이블 또는 뷰를 생성한다면 중복된 열명 오류가 발생합니다.
ORA-00957 오류는 중복된 컬럼을 빼거나 하나의 컬럼명을 달리 설정하여 해결할 수 있습니다.

CREATE TABLE TABLE_NAME
     AS
        SELECT EMPNO,
               ENAME,
               EMP.DEPTNO,
               DEPT.DEPTNO
          FROM EMP LEFT JOIN DEPT ON DEPT.DEPTNO = EMP.DEPTNO;
          DEPT.DEPTNO
               *
ERROR at line 6:
ORA-00957: duplicate column name
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗