现在有个需求把表1和表2合并在一起,这两表没有任何关联。
A表 : 编号 姓名 金额
1 张一 10
2 张二 20
3 张三 30
B表 : 编号 姓名 金额
1 李一 100
2 李二 200
3 李三 300
4 李四 400
最后效果为:
编号 姓名 金额 编号 姓名 金额
1 张一 10 1 李一 100
2 张二 20 2 李二 200
3 张三 30 3 李三 300
A表 : 编号 姓名 金额
1 张一 10
2 张二 20
3 张三 30
B表 : 编号 姓名 金额
1 李一 100
2 李二 200
3 李三 300
4 李四 400
最后效果为:
编号 姓名 金额 编号 姓名 金额
1 张一 10 1 李一 100
2 张二 20 2 李二 200
3 张三 30 3 李三 300
4 李四 400
答案:
Create table a([编号] int,[姓名] nvarchar(2),[金额] int)
Insert a
select 1,N'张一',10 union all
select 2,N'张二',20 union all
select 3,N'张三',30
Create table b([编号] int,[姓名] nvarchar(2),[金额] int)
Insert b
select 1,N'李一',100 union all
select 2,N'李二',200 union all
select 3,N'李三',300 union all
select 4,N'李四',400
go
select m.编号,m.姓名,m.金额,
n.编号,n.姓名,n.金额
from (select t.* , px = row_number() over(order by 编号) from a t) m
full join (select t.* , px = row_number() over(order by 编号) from b t) n
on m.px = n.px
drop table a , b
/* 编号 姓名 金额 编号 姓名 金额 ----------- ---- ----------- ----------- ---- ----------- 1 张一 10 1 李一 100 2 张二 20 2 李二 200 3 张三 30 3 李三 300 NULL NULL NULL 4 李四 400 (4 行受影响) */