日期:2014-05-18 浏览次数:20571 次
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 行)
*/