首先谢谢大家@create table A1 (id int,score int)
create table A2 (id int,score int)
goinsert into A1
select 1,23 union all
select 2,32 union all
select 2,33 union all
select 3,44 
go
insert into A2
select 2,45 union all
select 4,56 union all
select 6,93 
goselect A1.id,SUM(A1.score) A1_SUM,SUM(A2.score) as A2_SUM
from A1 left join A2 on A1.id=A2.id
//这条语句我是想统计A1中scroe的和,和A2中score的和,可结果是
1 23 NULL
2 65 90           //为什么是90而不是45啊????
3 44 NULL

解决方案 »

  1.   

    因为a表有两个ID=2,所以45*2 = 90
      

  2.   

    ect A1.id,A1.score A1_SUM,SUM(A2.score) as A2_SUM
    from 
    (
      select id,sum(score) score from A1 group by id
    ) A1
    left join A2 on A1.id=A2.id
      

  3.   

    create table A1 (id int,score int)
    create table A2 (id int,score int)
    goinsert into A1
    select 1,23 union all
    select 2,32 union all
    select 2,33 union all
    select 3,44 
    go
    insert into A2
    select 2,45 union all
    select 4,56 union all
    select 6,93 
    goselect A1.id,A1.score A1_SUM,A2.score A2_SUM
    from A1 left join A2 on A1.id=A2.id
    /*
    id          A1_SUM      A2_SUM      
    ----------- ----------- ----------- 
    1           23          NULL
    2           32          45
    2           33          45
    3           44          NULL(所影响的行数为 4 行)
    */select A1.id,SUM(A1.score) A1_SUM,SUM(A2.score) as A2_SUM
    from A1 left join A2 on A1.id=A2.id
    group by a1.id
    /*
    id          A1_SUM      A2_SUM      
    ----------- ----------- ----------- 
    1           23          NULL
    2           65          90
    3           44          NULL(所影响的行数为 3 行)
    */drop table a1 , a2