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 小组平均积分 " 这行语法错误,操作符丢失,不知道咋会事?
请高手帮帮忙~~~
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 小组平均积分 " 这行语法错误,操作符丢失,不知道咋会事?
请高手帮帮忙~~~
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.小组名
group by 小组名
group by 小组名楼上正解!
有个朋友帮我写了条语句可以在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环境里不认呢???