SELECT 编码,姓名,SUM(变动数A),年度,月份 FROM (
SELECT * FROM TA 
UNION ALL
SELECT * FROM TB)T GROUP BY 编码,姓名,年度,月份

解决方案 »

  1.   

    select A.编码,A.姓名,A.变动数+isnull(B.变动数,0) as 最终变动数,A.年度,A.月份
    from tb A left join tb B on A.编码=B.编码 and A.年度=B.年度 and A.月份=B.月份 and A.姓名=B.姓名
      

  2.   

    DECLARE @A TABLE(编码 INT,  姓名 NVARCHAR(10), 变动数A INT,    年度 INT,    月份 INT) 
    INSERT @A SELECT 1001  ,N'张三',      1000  ,  2008 , 10 
    INSERT @A SELECT 1001  ,N'张三',      1000  ,  2008 , 11 
    INSERT @A SELECT 1001  ,N'张三',      1000  ,  2008 , 12 
    INSERT @A SELECT 1002  ,N'李四',      2000  ,  2008 , 10 
    INSERT @A SELECT 1002 , N'李四',      1000 ,   2008 , 11 
    INSERT @A SELECT 1002,  N'李四',      2000,    2008  ,12  
    DECLARE @B TABLE(编码 INT,  姓名 NVARCHAR(10), 变动数B INT,    年度 INT,    月份 INT) 
    INSERT @B SELECT 1001 , N'张三',      20 ,       2008 , 10 
    INSERT @B SELECT 1002 , N'李四',      100,      2008 , 10 
    INSERT @B SELECT 1002,  N'李四',      200 ,     2008,  12 SELECT 编码,姓名,SUM(变动数A),年度,月份 FROM (
    SELECT * FROM @A 
    UNION ALL
    SELECT * FROM @B)T GROUP BY 编码,姓名,年度,月份
    /*编码          姓名                     年度          月份          
    ----------- ---------- ----------- ----------- ----------- 
    1001        张三         1020        2008        10
    1001        张三         1000        2008        11
    1001        张三         1000        2008        12
    1002        李四         2100        2008        10
    1002        李四         1000        2008        11
    1002        李四         2200        2008        12*/
      

  3.   

    declare @t table(编码 varchar(4),姓名 varchar(4),变动数A int,年度 int,月份 int)
    insert @t select '1001','张三',1000,2008,10
    insert @t select '1001','张三',1000,2008,11
    insert @t select '1001','张三',1000,2008,12
    insert @t select '1002','李四',2000,2008,10
    insert @t select '1002','李四',1000,2008,11
    insert @t select '1002','李四',2000,2008,11declare @b table(编码 varchar(4),姓名 varchar(4),变动数b int,年度 int,月份 int)
    insert @b select '1001','张三',20,2008,10
    insert @b select '1002','李四',100,2008,10
    insert @b select '1002','李四',200,2008,12
    select a.编码,a.姓名,'最终变动数'=(isnull(a.变动数A,0)+isnull(b.变动数b,0)),a.年度,a.月份
    from @t a left join @b b on a.姓名=b.姓名 and a.年度=b.年度 and a.月份=b.月份
    /*
    编码   姓名   最终变动数       年度          月份          
    ---- ---- ----------- ----------- ----------- 
    1001 张三   1020        2008        10
    1001 张三   1000        2008        11
    1001 张三   1000        2008        12
    1002 李四   2100        2008        10
    1002 李四   1000        2008        11
    1002 李四   2000        2008        11(所影响的行数为 6 行)*/