日期:2014-05-18 浏览次数:20465 次
create table A(项目名称 varchar(10),部门 varchar(10)) insert into a values('项目1', '部门1') insert into a values('项目2', '部门1') insert into a values('项目3', '部门2') create table b(项目名称 varchar(10),专业 varchar(10)) insert into b values('项目1', '专业1') insert into b values('项目1', '专业2') insert into b values('项目1', '专业3') insert into b values('项目2', '专业1') go select t1.* , isnull(t2.cnt , 0) 归档数 , t1.项目数 - isnull(t2.cnt , 0) 未归数 from ( select m.部门, count(1) 项目数 from A m group by 部门 ) t1 left join ( select m.部门,count(1) cnt from a m , ( select 项目名称 from ( select distinct 项目名称 from b where 专业 = '专业1' union all select distinct 项目名称 from b where 专业 = '专业2' union all select distinct 项目名称 from b where 专业 = '专业3' ) t group by 项目名称 having count(1) = 3 ) n where m.项目名称 = n.项目名称 group by m.部门 ) t2 on t1.部门 = t2.部门 drop table a , b /* 部门 项目数 归档数 未归数 ---------- ----------- ----------- ----------- 部门1 2 1 1 部门2 1 0 1 (所影响的行数为 2 行) */