sqlserver 数据库表数据合并

如题所述

--先把表1和表2的solver合并起来,再分别和表1,表2做连接
With T
As
(
    Select solver From 表1
    union 
    Select solver From 表2
)
Select T.solver,Isnull(A.amount1,0) As amount1,isnull(B.amount2,0) As amount2 From T
Left Join 表1 A on T.solver=A.solver
Left Join 表2 B on T.solver=B.solver

追问

追答With T
As
(
    Select solver From (查询语句1) A
    union 
    Select solver From (查询语句2) B
)
Select T.solver,Isnull(A.amount1,0) As amount1,isnull(B.amount2,0) As amount2 From T
Left Join (查询语句1) A on T.solver=A.solver
Left Join (查询语句2) B on T.solver=B.solver
--你贴个图片也蛮郁闷的,直接把你的语句放进去就可以了,或者先放到临时表,在用刚才的查询,这是MSSQL哦,2005+版本
--以下也可以
Select T.solver,Isnull(A.amount1,0) As amount1,isnull(B.amount2,0) As amount2 From(
    Select solver From (查询语句1) A
    union 
    Select solver From (查询语句2) B
) T
Left Join (查询语句1) A on T.solver=A.solver
Left Join (查询语句2) B on T.solver=B.solver

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-04
先建好表三,然后执行sql语句:
insert into table3 values(select t1.solver,t1.amount1,t2.amount2 from table1 t1 inner join table2 t2 on t1.solver = t2.solver);
insert into table3 values(select t1.solver,t1.amount1,0 from table1 t1,table t2 where t1.solver <> t2.solver);
insert into table3 values(select t2.solver,0,t2.amount1 from table1 t1,table t2 where t1.solver <> t2.solver);追问

不建表三可以查询出来吗?

追答

select t1.solver,t1.amount1,t2.amount2 from table1 t1 inner join table2 t2 on t1.solver = t2.solver
UNION
select t1.solver,t1.amount1,0 from table1 t1,table t2 where t1.solver t2.solver
UNION
select t2.solver,0,t2.amount1 from table1 t1,table t2 where t1.solver t2.solver
试试吧