我只想显示每个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
答案 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);