选择sql server少于10个条目的记录

时间:2016-11-17 19:32:13

标签: sql sql-server

我只想显示每个ID记录少于10个条目的ID,ID可能有多个值,如下面的数据所示。我想要 我已经尝试过这个查询,但它也选择了ID 2的记录

   select ID, Name ,LastName ,PaymentDate,POSITION
    From ( select ID, Name ,LastName ,PaymentDate    ,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY PaymentDate DESC) AS POSITION 

     )
     where Position < 10

任何帮助,请

 ID   Name LastName PaymentDate
  1    John Abraham  2015-05-08
  1    John Abraham  2014-05-08 
  1    John Abraham  2013-05-08
  1    John Abraham  2012-05-08
  1    John Abraham  2011-05-08
  1    John Abraham  2010-05-08
  ------------------------------
  2    Adam White    2015-05-08
  2    Adam White    2014-05-08 
  2    Adam White    2013-05-08
  2    Adam White    2012-05-08
  2    Adam White    2011-05-08
  2    Adam White    2010-05-08
  2    Adam White    2009-05-08
  2    Adam White    2008-05-08 
  2    Adam White    2007-05-08
  2    Adam White    2006-05-08
  2    Adam White    2005-05-08
  2    Adam White    20004-05-08

3 个答案:

答案 0 :(得分:2)

Min sum(abs(x))
s.t. A*x = 0,
     lb <= x <= ub

答案 1 :(得分:2)

您需要count(*),而不是row_number()

select ID, Name, LastName, PaymentDate
from (select ID, Name, LastName, PaymentDate,
             count(*) over (partition by ID) as cnt 
      from . . .
     ) t
where cnt < 10;

这会显示行(您的问题建议是您想要的行)。如果您只想要ID,那么聚合更好:

select id
from t
group by id
having count(*) < 10;

答案 2 :(得分:1)

请尝试:

Select ID, Name, LastName, PaymentDate
  From MyTable
 Where ID in (Select ID From MyTable Group By ID Having Count(*) < 10);