Объединение столбцов из двух несвязанных таблиц в SQL
Допустим, у меня есть две таблицы
Таблица 1
COl_1 COl_2
1 5
2 6
3 7
4 8
И Таблица 2
COL3 COL4
9 13
10 14
11 15
12 16
Я хочу следующее:
COL_1 COL_2 COL3 COL4
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
Кроме того, число строк в каждой из таблиц в точности одинаково, нет ключевого отношения или целостности.
Любая подсказка?
2 ответа
Вы можете сделать это используя row_number()
чтобы добавить ключ "соединение" к двум таблицам:
select t1.col_1, t1.col_2, t2.col_3, t2.col_4
from (select t1.*, row_number() over (order by col_1) as seqnum
from table1 t1
) t1 join
(select t2.*, row_number() over (order by col_3) as seqnum
from table2 t2
) t2
on t1.seqnum = t2.seqnum;
Если таблицы имеют разное количество строк, возможно, вы захотите внешнее соединение.
Вы можете добавить идентификационный столбец в качестве альтернативы row_number() следующим образом
alter table Table_1 add id int identity(1,1)
alter table Table_2 add id int identity(1,1)
Затем, используя этот столбец идентификатора, вы можете объединить обе таблицы следующим образом (как предложил LONG FULL JOIN)
select col1, col2, COL3, COL4
from Table_1
full outer join Table_2 on Table_1.id = Table_2.id
С некоторыми дополнительными данными вы можете получить следующие результаты