做成一个存储过程吧, select 参加人 from 表名 where 活动名称='聚会' or 活动名称='生日' group by 参加人 having count(活动名称)=活动数目 --这个条件参数应该是在程序中完成吧?你在程序中再生成一个活动数目就可以了
select 参加人,活动名称 from 表名 where 活动名称 in ('yourname','yourname') group by 参加人 having count(*)>=3 order by count(*) desc
select 参加人 from 表名 where 活动名称 in ('yourname','yourname') group by 参加人 having count(*)>=3 order by count(*) desc
或者写成过程 create proc proc_test @tj varchar(8000), @num int as declare @sql varchar(8000) set @sql='select 参加人 from 表名 where '+@tj+' group by 参加人 having count(活动名称)='+@num exec(@sql)--这样的话,输入参数是类似“活动名称='聚会' or 活动名称='生日'”的条件,你要几个条件都可以,再加上一个活动数目就可以了, 这些在程序中生成应该没有问题吧
select 参加人 from (select distinct * from tablename)t group by 参加人 having count(*)=(select count(distinct 活动名称) from tablename)
create table #t(活动名称 varchar(10),参加人 varchar(10)) insert into #t select '聚会','tom' insert into #t select '聚会','ami' insert into #t select '聚会','jan' insert into #t select '聚会','haa' insert into #t select '生日','tom' insert into #t select '生日','jan' insert into #t select '生日','jerry' insert into #t select '开会','tom' insert into #t select '开会','ami' insert into #t select '开会','john'select 参加人 from #t group by 参加人 having count(*) = (select count(distinct 活动名称) from #t)
select 参加人 from 表名 where 活动名称='聚会' or 活动名称='生日' group by 参加人 having count(活动名称)=活动数目
--这个条件参数应该是在程序中完成吧?你在程序中再生成一个活动数目就可以了
create proc proc_test
@tj varchar(8000),
@num int
as
declare @sql varchar(8000)
set @sql='select 参加人 from 表名 where '+@tj+' group by 参加人
having count(活动名称)='+@num
exec(@sql)--这样的话,输入参数是类似“活动名称='聚会' or 活动名称='生日'”的条件,你要几个条件都可以,再加上一个活动数目就可以了,
这些在程序中生成应该没有问题吧
from
(select distinct * from tablename)t
group by 参加人
having count(*)=(select count(distinct 活动名称) from tablename)
insert into #t select '聚会','tom'
insert into #t select '聚会','ami'
insert into #t select '聚会','jan'
insert into #t select '聚会','haa'
insert into #t select '生日','tom'
insert into #t select '生日','jan'
insert into #t select '生日','jerry'
insert into #t select '开会','tom'
insert into #t select '开会','ami'
insert into #t select '开会','john'select
参加人
from
#t
group by
参加人
having count(*) = (select count(distinct 活动名称) from #t)