|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 samichang 于 2012-12-18 15:39 编辑
table1
Class name id
一(1) 张三 10001
二(6) 李四 10004
三(4) 王二 10005
一(1) 张三 10002
table2
id type
10001 表扬
10001 表扬
10004 金奖
10001 金奖
10005 银奖
10004 表扬
10001 银奖
10002 银奖
10002 银奖
用以下SQL语句:
select m.class,sum(iif(n.class is null,0,1)) as total,m.表扬,m.金奖,m.银奖
from
(select a.class,
sum(IIf(b.type = '表扬',1,0)) as 表扬,
sum(IIf(b.type = '金奖',1,0)) as 金奖,
sum(IIf(b.type = '银奖',1,0)) as 银奖
from table1 a inner join table2 b on a.id = b.id
group by a.class) as m
left join
(select table1.class,table1.id
from table1 inner join table2 on table1.id = table2.id group by table1.class,table1.id
having count(*) >= 2) as n
on m.class = n.class
group by m.class,m.表扬,m.金奖,m.银奖
结果为:
Class total 表扬 金奖 银奖
一(1) 2 1 1 2
三(4) 0 0 0 1
二(6) 1 1 1 0
要求按班级统计, total 是该班级里得到2个以上荣誉(一个类型只能算一个)的人头数COUNT,后面的就是各个荣誉的人头数,所以上面查询结果是错的,上面统计的是获得荣誉的个数,没有按照荣誉类型统计
我想要的结果为:
Class total 表扬 金奖 银奖
一(1) 1 2 1 3
三(4) 0 0 0 1
二(6) 1 1 1 0
请高手帮忙修改一下,感谢!!!!!
db1.rar
(7.47 KB, 下载次数: 10)
|
|