现在有个需求把表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 行受影响) */