Это потому, что таблицы NS_F3
и NS_FA2
содержат столбцы с одинаковыми именами - в этом случае вы должны использовать столбец псевдоним , чтобы избежать дублирования имен столбцов.
Вотпример: я создаю простую таблицу, как извлечение нескольких столбцов из таблицы Скотта EMP
:
SQL> create table t_first as select deptno, empno, ename from emp where rownum < 5;
Table created.
Присоединение к DEPT
таблице:
SQL> select * from t_first e join dept d on e.deptno = d.deptno;
DEPTNO EMPNO ENAME DEPTNO DNAME LOC
---------- ---------- ---------- ---------- -------------- -------------
20 7369 SMITH 20 RESEARCH DALLAS
20 7566 JONES 20 RESEARCH DALLAS
30 7521 WARD 30 SALES CHICAGO
30 7499 ALLEN 30 SALES CHICAGO
^^^^^^^^^ ^^^^^^^^
this is DEPTNO column ... ... and here's another one
Пока он работает в SELECT
, он не будет работать в CREATE TABLE
:
SQL> create table test as
2 select * from t_first e join dept d on e.deptno = d.deptno;
select * from t_first e join dept d on e.deptno = d.deptno
*
ERROR at line 2:
ORA-00957: duplicate column name
Решение состоит в использовании псевдонима столбца, например:
SQL> create table test as
2 select e.deptno emp_deptno, --> first alias
3 e.empno,
4 e.ename,
5 d.deptno, dept_deptno --> second alias
6 d.dname,
7 d.loc
8 from t_first e join dept d on e.deptno = d.deptno;
Table created.
SQL> select * From test;
EMP_DEPTNO EMPNO ENAME DEPT_DEPTNO DNAME LOC
---------- ---------- ---------- ----------- -------------- -------------
20 7369 SMITH 20 RESEARCH DALLAS
20 7566 JONES 20 RESEARCH DALLAS
30 7521 WARD 30 SALES CHICAGO
30 7499 ALLEN 30 SALES CHICAGO
SQL>