日期:2014-05-17  浏览次数:20369 次

多表合成问题
有两个表结构如下

表1:
用户Id 额外所得1
1      200.00
3      400.00


表2:
用户Id 额外所得2
1       10.00
2       11.20

要求合成一个表结构如下:
用户Id 额外所得1 额外所得2
1       200       10.00
2       0.00      11.20
3       400       0.00

就是要求把表1和表2出现过的记录按用户Id合并起来,please help.....




------最佳解决方案--------------------
select isnull(a.用户id,b.用户id) as 用户id,isnull(额外所得1,0) as 额外所得1,isnull(额外所得2,0) as 额外所得2
from TB1 as a  full join TB2 as b on a.用户id=b.用户id
------其他解决方案--------------------
SELECT 用户Id ,SUM(额外所得1), SUM(额外所得2)
FROM (

SELECT 用户Id ,额外所得1,0 额外所得2
FROM 表1
UNION ALL 
SELECT 用户Id ,0 额外所得1, 额外所得2
FROM 表2
) a
GROUP BY 用户Id

------其他解决方案--------------------

SELECT 用户ID,额为金额1,额外金额2 FROM 表1 LEFT JOIN 表2 ON 表1.ID=表2.ID

------其他解决方案--------------------
谢谢各位帮忙,雪狼和发粪涂墙的方法都很好,结果也正确,灬尒蕏づ的方法会丢失掉表2的记录

------其他解决方案--------------------
雪狼的在大数据量的时候会很慢,我的那个客户忽略主键问题。还是建议用我的
------其他解决方案--------------------
null