我确定这实际上是一个简单的解决方案(听起来就像是这样)但是我的大脑无法解决如何让它发挥作用。
我目前正在使用此查询
Select
m.memberfirstname+' '+m.memberlastname [Name],
m.MemberDOB,
s.GroupID,
c.PaperID,
cr.PaperScanningStatusID,
ROW_NUMBER() OVER(PARTITION BY m.memberfirstname+' '+m.memberlastname,m.MemberDOB,s.GroupID ORDER BY m.MemberDOB) rn
From
Papers c,
Members m,
Sites s,
PaperRetrieval cr
Where
c.SiteID=s.SiteID
and c.MemberID=m.MemberID
and c.PaperID=cr.PaperID
and cr.PaperScanningStatusID not in (100)
并且rn列工作得很好。现在我需要捕获所有rn计数大于1的行。
问题是我通常会写一些像rn> = 2的东西,但是,我也希望捕获第一行。不仅仅是2岁以上。
我不知道如何捕获第一行而不捕获其他没有计数大于1的行。
答案 0 :(得分:2)
你可以再增加一个列来计算,
COUNT(*) OVER(PARTITION BY m.memberfirstname+' '+m.memberlastname,m.MemberDOB,s.GroupID ORDER BY m.MemberDOB) CountNo
然后CountNo > 1