Oracle дал имена столбцов - PullRequest
3 голосов
/ 29 июня 2011

У меня есть 2 таблицы с 2 столбцами (ИД пользователя и год).

Запрос1:

SELECT * FROM table_1 t1 
FULL JOIN table_2 t2 ON t1.user_id=t2.user_id AND t1.year=t2.year

Создает следующие имена столбцов:

user_id, year, user_id_1, year_1

Запрос2:

CREATE TABLE table_copy AS SELECT * FROM
(SELECT * FROM table_1 t1 
 FULL JOIN table_2 t2 ON t1.user_id=t2.user_id  AND t1.year=t2.year);

Создает следующие расплывчатые имена столбцов:

QCSJ_C000000000400000, QCSJ_C000000000400002, QCSJ_C000000000400001, QCSJ_C000000000400003

Существует ли краткий способ заставить Oracle query2 использовать те же имена, что и query1, не записывая их явно (этоважно когда есть много колонок)?Может быть, какие-то настройки Oracle?

Ответы [ 2 ]

5 голосов
/ 29 июня 2011

Перечислите ваши столбцы и используйте AS, чтобы указать имя столбца.

например,

CREATE TABLE table_copy AS
SELECT t1.user_id AS t1_user_id,
       t1.year    AS t1_year,
       t2.user_id AS t2_user_id,
       t2.year    AS t2_year
FROM   table_1 t1
FULL   JOIN table_2 t2 ON t1.user_id=t2.user_id
AND    t1.year=t2.year;
0 голосов
/ 29 июня 2011

Я не полностью понял вашу ожидаемую часть, но я понял, что вы хотите, чтобы все столбцы из таблицы_1 или только из таблицы_2

, если это так, вы можете использовать следующий запрос для создания таблицы ..

CREATE TABLE table_copy AS SELECT * FROM 
    (SELECT t1.* FROM table_1 t1 FULL JOIN table_2 t2 
      ON t1.user_id=t2.user_id  
      AND t1.year=t2.year); 

или если вы хотите, чтобы оба столбца таблицы, но с другим именем в sql, то вы должны следовать запросу, предложенному cagcowboy only ....

, но вы можетесоздать таблицу с префиксом типа "t1_" в plsql без указания или написать все имя столбца ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...