SQL Server: объединение двух таблиц вместе и отправка вывода в ошибку временной таблицы

Я пытаюсь объединить две таблицы SQL в уникальный столбец и отправить их во временную таблицу. Однако я получаю сообщение об ошибке (см. Ниже).

Когда я выполняю левое соединение ниже, оно создает два столбца «UNIQUE_IDENTIFIER», которые разбивают мой оператор INTO.

    SELECT * 
    INTO #temp_table 
    FROM #df_EVENT5_a as t1
    LEFT JOIN #df_ERA_Final as t2 ON t1.UNIQUE_IDENTIFIER = t2.UNIQUE_IDENTIFIER  

Ошибка: имена столбцов в каждой таблице должны быть уникальными. Имя столбца «UNIQUE_IDENTIFIER» в таблице «#temp_table» указано более одного раза.


person PineNuts0    schedule 14.11.2017    source источник
comment
включите имена столбцов в select и дайте им разные псевдонимы.   -  person Vamsi Prabhala    schedule 14.11.2017
comment
как мне дать им разные имена ... это SELECT [COL] AS [NEWNAME]?   -  person PineNuts0    schedule 14.11.2017
comment
Да, ты должен это сделать.   -  person Vamsi Prabhala    schedule 14.11.2017
comment
это не позволит мне сделать это, потому что этот столбец еще не создан, поэтому я не могу поместить его в свой оператор выбора   -  person PineNuts0    schedule 14.11.2017
comment
Вы выбираете 2 столбца с одинаковым именем (t1.UNIQUE_IDENTIFIER = t2.UNIQUE_IDENTIFIER). Используйте заданный список столбцов вместо файла *.   -  person Mad Myche    schedule 14.11.2017
comment
Можете ли вы показать мне фактический код того, что вы будете делать, пожалуйста?   -  person PineNuts0    schedule 14.11.2017
comment
пожалуйста, покажите мне в коде, если это возможно ... меня смущают ваши текстовые комментарии   -  person PineNuts0    schedule 14.11.2017


Ответы (1)


Это потому, что это имя столбца существует в обеих таблицах. В одной таблице не может быть двух столбцов с одинаковыми именами.

Ваш запрос такой же, как сказать

SELECT 
    t1.UNIQUE_IDENTIFIER 
    ,t2.UNIQUE_IDENTIFIER 
    --list all other columns...
INTO #temp_table 
FROM #df_EVENT5_a as t1
LEFT JOIN #df_ERA_Final as t2 ON t1.UNIQUE_IDENTIFIER = t2.UNIQUE_IDENTIFIER  

Это означает, что #temp_table будет иметь два столбца с именами UNIQUE_IDENTIFER. Итак, удалите * и перечислите столбцы, которые вы хотите явно из каждой таблицы... и псевдоним любых столбцов с тем же именем...

SELECT 
    FIRST_UNIQUE_IDENTIFIER = t1.UNIQUE_IDENTIFIER 
    ,SECOND_UNIQUE_IDENTIFIER = t2.UNIQUE_IDENTIFIER 
    --list all other columns...
INTO #temp_table 
FROM #df_EVENT5_a as t1
LEFT JOIN #df_ERA_Final as t2 ON t1.UNIQUE_IDENTIFIER = t2.UNIQUE_IDENTIFIER  
person scsimon    schedule 14.11.2017