select * from view_Report 
 where name in (select name from view_Report GROUP BY NAME HAVING COUNT(NAME) > num )

解决方案 »

  1.   

    select a.* from  view_Report a,
    (select NAME from view_Report GROUP BY NAME HAVING COUNT(NAME) > num) b where a.name=b.name;
      

  2.   

    我也来写个
    select * from (select ID , DISID ,NAME,rank() over(partition by DISID order by NAME) bb from aa) where bb>num;
      

  3.   

    谢谢楼上诸位大哥。
    可能我的意思没有表达明白。我要先执行一个条件,然后再把NAME相同的记录数大于某个值的记录取出来。。譬如: 先要DISID=110的。然后再把NAME相同的记录数大于某个值的记录取出来。。
      

  4.   

    是先有先决条件,把 视图过滤一遍,然后根据过滤后的
    结果表,再 然后再把NAME相同的记录数大于某个值的记录取出来。。这样该怎么做呢。。
      

  5.   

    能否这样:先根据条件把结果保存到一个 DataTable中,
    然后再用 DataTAble 过滤,把NAME相同的记录数大于某个值的记录取出来。。这样该如何做啊?
      

  6.   

    把条件加到group by前面,他会先过滤条件再group by的
      

  7.   

    select * from tbname a
    where disid=110 and (select count(*) from tbname b where a.name=b.name)>=4;
      

  8.   

    select * from tbname a
    where disid=110 and (select count(*) from (select * from tbname a
    where disid=110)b where a.name=b.name)>=4;