If Table 1 contains:
[FN] [LN] [MN] [A] [B] [C]
--------------------------------------------------------
hello world 123 something else 456
other row 45 demo data 789
something else 456 NULL NULL 999
and Table 2 contains:
[FN] [LN] [MN]
----------------------------
table two 1
just-a-demo here 2
final row 3
and the expected result is:
[FN] [LN] [MN] [A] [B] [C]
--------------------------------------------------------
table two 1 something else 456
just-a-demo here 2 demo data 789
final row 3 NULL NULL 999
you can first get the expected result like this;
select [S].[FN], [S].[LN], [S].[MN], [F].[A], [F].[B], [F].[C] from
(
select top 10
row_number() over (order by (select 1)) as [Id], [A], [B], [C]
from [Table 1]
) as [F]
left join
(
select top 10
row_number() over (order by (select 1)) as [Id], [FN], [LN], [MN]
from [Table 2]
) as [S]
on [F].[Id] = [S].[Id]
Note:
The top 10: you may need to remove this, but you must be sure both tables return the same number of rows. If they don't, there is no way to do 1:1 mapping according to the information you gave in the comments.
row_number() over (order by (select 1)) simply puts "1" for the first returned row, "2" for the next one, etc. This is a weird way to join the results from two tables: I would expect to have an actual ID in both tables, or something which enables to do an actual join.
You can then insert it into a temporary table:
what you can do is to use the insert into with a subquery select like this:
insert into [TempTable] ([FN], [LN], [MN], [A], [B], [C])
select [S].[FN], [S].[LN], [S].[MN], [F].[A], [F].[B], [F].[C] from
(
select top 10
row_number() over (order by (select 1)) as [Id], [A], [B], [C]
from [Table 1]
) as [F]
left join
(
select top 10
row_number() over (order by (select 1)) as [Id], [FN], [LN], [MN]
from [Table 2]
) as [S]
on [F].[Id] = [S].[Id]
and then replace [Table 1] by [TempTable].