SQL Server 2012如何检索特定记录的序号位置

SQL Server 2012 how to retrieve ordinal position of specific record

我有一个包含以下列和示例数据的 table,其中 ItemID 是唯一的:

   ID    User    ItemID     ExpiryDate  
    1    John    A13534     2015-12-24  
    3    Mark    B14532     2015-12-13
.......  
12415    John    B43245     2012-12-30
.......  
75741    John    C14542     2012-12-22
.......

过滤器是:

  WHERE User = 'John' 
    AND ExpiryDate > getDate() 
  ORDER BY 
      ExpiryDate DESC

考虑到 ItemID 是唯一的,我需要确定 itemID = B43245 是否在前 1000 个选定项目中

我尝试用 Row_NumberRANK 编写解决方案,但我不知道将 ItemID 的过滤器放在哪里 :-(

考虑到 table 包含超过 100.000 个项目,您能否提出一个不太重的解决方案?

谢谢!

您可以简单地获取前1000条记录,然后获取您的id。拿到记录的话,这个id在top 1000之内,如果没有,那就不是。或者,如果您愿意,可以将外部 select 更改为计数。

select * from
(
    select top 1000 ID
    from yourtable
    WHERE User='John' AND ExpiryDate > getDate()
    ORDER BY ExpiryDate DESC
) x
where id = 'B43245'