--不一定3次?那选出三次以上的可以没有?
select 参加人  from 表名 group by 参加人 having count(活动名称)>=3

解决方案 »

  1.   

    做成一个存储过程吧,
    select 参加人  from 表名 where 活动名称='聚会' or 活动名称='生日' group by 参加人 having count(活动名称)=活动数目
    --这个条件参数应该是在程序中完成吧?你在程序中再生成一个活动数目就可以了
      

  2.   

    select 参加人,活动名称  from 表名 where 活动名称 in ('yourname','yourname') group by 参加人 having count(*)>=3 order by count(*) desc 
      

  3.   

    select 参加人  from 表名 where 活动名称 in ('yourname','yourname') group by 参加人 having count(*)>=3 order by count(*) desc
      

  4.   

    或者写成过程
    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 活动名称='生日'”的条件,你要几个条件都可以,再加上一个活动数目就可以了,
    这些在程序中生成应该没有问题吧
      

  5.   

    select 参加人
    from
    (select distinct * from tablename)t
    group by 参加人
    having count(*)=(select count(distinct 活动名称) from tablename)
      

  6.   

    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)
      

  7.   

    多谢各位,问题已经解决。 yjdn(无尽天空)和 hsj20041004(光芒)的方法我都试了,都可以。