表1
ID NAM  N1 N2 N3
001 AAA 80 0  0表2
ID NAM  N1 N2 N3
001 AAA 0  50 0表3
ID NAM N1 N2 N3
001 AAA 0 0 30  我用union all 合并后
ID NAM N1 N2 N3
001 AAA 80 0 0
001 AAA 0 50 0
001 AAA 0 0 30 我想要的 结果是
ID NAM N1 N2 N3
001 AAA 80 50 30   这个应该是 合并成一条记录

解决方案 »

  1.   


    select a.ID,a.NAM,a.NUM N1,b.NUM N2,c.NUM N3 from 表1 a
    inner join 表2 b
    on a.ID=b.ID
    inner join 表3 c
    on b.ID=c.ID
      

  2.   


    select ID,NAM,max(N1) N1,max(N2) N2,max(N3) N3
    from (你union all后的结果) t
    group by t.ID,t.NAM;
      

  3.   


    --> 测试数据:@表1
    declare @表1 table([ID] varchar(3),[NAM] varchar(3),[N1] int,[N2] int,[N3] int)
    insert @表1
    select '001','AAA',80,0,0--> 测试数据:@表2
    declare @表2 table([ID] varchar(3),[NAM] varchar(3),[N1] int,[N2] int,[N3] int)
    insert @表2
    select '001','AAA',0,50,0--> 测试数据:@表3
    declare @表3 table([ID] varchar(3),[NAM] varchar(3),[N1] int,[N2] int,[N3] int)
    insert @表3
    select '001','AAA',0,0,30SELECT 
    ID,NAM,MAX(N1) N1,MAX(N2) N2,MAX(N3) N3 
    FROM 
    (
    SELECT * FROM @表1 UNION ALL
    SELECT * FROM @表2 UNION ALL
    SELECT * FROM @表3
    )T GROUP BY ID,NAM
    /*
    ID   NAM  N1          N2          N3
    ---- ---- ----------- ----------- -----------
    001  AAA  80          50          30
    */