A 表 (SID 为自动编号,成员编号唯一,单每个小组成员数不一样) 
sid 小组名 成员编号 成员姓名 
1 AAA 1001 ddd 
2 AAA 1002 eee 
3 BBB 1003 fff 
4 BBB 1004 ggg 
5 CCC 1005 hhh B表 (SID 为自动编号,成员编号同A表) 
sid 成员编号 项目号 积分 
1 1001 p1 20 
2 1001 p2 30 
3 1001 p3 40 
4 1004 p1 20 
5 1002 p2 50 
6 1003 p2 60 通过B表的成员积分汇总,来统计有成员组成的小组的总积分。 要求查询结果如下: 小组名 小组总积分 小组平均积分(是小组成员的总积分除以成员数) AAA     140         70 
BBB      80         40 
CCC       0          0 我写的语句如下:select 
a.小组名 as 小组名, 
null(sum(b.积分),0) as 小组总积分, 
null((sum(b.积分)/count( distinct a.成员编号)),0) as 小组平均积分 
from a 
left join b on a.成员编号=b.成员编号 
group by a.小组名 运行后总提示"null((sum(b.积分)/count( distinct a.成员编号)),0) as 小组平均积分 " 这行语法错误,操作符丢失,不知道咋会事?
请高手帮帮忙~~~

解决方案 »

  1.   

    select T1.小组名,T1.成员编号,T1.成员姓名,sum(T2.积分) as 积分 from A T1,B T2 inner join T1.成员编号=T2.成员编号 group by T1.小组名,T1.成员编号,T1.成员姓名
      

  2.   

    select T1.小组名,T1.成员编号,T1.成员姓名,sum(T2.积分) as 积分 from A T1 inner join B T2 on T1.成员编号=T2.成员编号 group by T1.小组名,T1.成员编号,T1.成员姓名
      

  3.   


    select 
        a.小组名 as 小组名, 
        sum(isnull(b.积分,0)) as 小组总积分, 
        sum(isnull(b.积分,0))/count( distinct a.成员编号) as 小组平均积分 
    from a 
       left join b on a.成员编号=b.成员编号 
    group by a.小组名 
      

  4.   

    SELECT 小组名,ISNULL(SUM(积分),0),ISNULL(avg(积分),0) from A LEFT OUTER JOIN B ON A.成员编号 = B.成员编号 GROUP BY 小组名
      

  5.   

    select a.小组名 as 小组名,isnull(sum(b.积分),0) as 总积分,isnull(sum(b.积分)/count(distinct(a.成员编号)),0) 平均积分 from b right  join A on b.成员编号= a.成员编号
    group by 小组名
      

  6.   

    select a.小组名 as 小组名,isnull(sum(b.积分),0) as 总积分,isnull(avg(b.积分),0) 平均积分 from b right  join A on b.成员编号= a.成员编号 
    group by 小组名楼上正解!
      

  7.   

    各位,不好意思,非常感谢帮助,不过我的查询是在access里用的,你们提供的运行后都有语法错误
    有个朋友帮我写了条语句可以在ACCESS里运行通过,不过放在VB里就不行了,以下是详细说明,请再帮帮我!~~~
    目的:数据库查询两个表做数据统计 
    环境:ACCESS 
    问题描述: 我用以下语句在access里面调试都能正常通过,但我放在VB程序里就不行了,请高手帮忙指点一下!! 
    select c.小组名,d.积分,d.积分/c.count 
    from 
    (select 小组名,count(成员编号) as count from a group by 小组名) c, 
    (select a.小组名,sum(iif(isnull(b.积分),0,b.积分)) as 积分 from a left join b 
    on a.成员编号=b.成员编号 group by a.小组名) d 
    where 
    c.小组名=d.小组名 放到VB里如下: 
    call openconn 
    sql="select c.小组名,d.积分,d.积分/c.count 
    from 
    (select 小组名,count(成员编号) as count from a group by 小组名) c, 
    (select a.小组名,sum(iif(isnull(b.积分),0,b.积分)) as 积分 from a left join b 
    on a.成员编号=b.成员编号 group by a.小组名) d 
    where 
    c.小组名=d.小组名 " 
    rs.open sql,cn,1,1 
    结果是没有任何反应,看来这句查询是不是VB环境里不认呢???