Sql 选择不同的、顶部的、按顺序的

Sql 选择不同的、顶部的、按顺序的,sql,sql-server,database,Sql,Sql Server,Database,我需要使用不同的biaccounted值获取前N行,以避免重复。我试图创建一个子查询,但SQL Aerver告诉我,ORDER BY子句不能在子查询中 这是我到目前为止提出的问题 SELECT u.*, c.vcAccountID,t.tiAccountTypeID FROM dbo.tbUserReviewAccount u inner join tbCustAccount c on c.biAccountID=u.biAccountId inner join tbAccountType t

我需要使用不同的
biaccounted
值获取前N行,以避免重复。我试图创建一个子查询,但SQL Aerver告诉我,
ORDER BY
子句不能在子查询中

这是我到目前为止提出的问题

SELECT u.*, c.vcAccountID,t.tiAccountTypeID
FROM dbo.tbUserReviewAccount u
inner join tbCustAccount c on c.biAccountID=u.biAccountId
inner join tbAccountType t on t.tiAccountTypeID=c.tiAccountTypeID
where u.iUserId=1
order by u.dtReviewedOn desc
这是我得到的结果,我需要向下筛选,以获得与用户审核的最新帐户标准匹配的前N行,审核日期在列
dtReviewedOn
,但我需要获得前N行


如果N=5(N=顶行),我试图得到的只是第1、4、5、6、7行

这通常使用
行编号()进行处理。


这通常会使用
行编号()进行处理


仍然需要限制为5行。只需在
SELECT
子句之后添加
TOP 5
,就可以了。仍然需要限制为5行。只需在
SELECT
子句之后添加
TOP 5
,就可以了。
select top (5) u.*
from (select u.*, c.vcAccountID, t.tiAccountTypeID,
             row_number() over (partition by u.biAccountId order by u.dtReviewdOn desc
      from dbo.tbUserReviewAccount u inner join
           tbCustAccount c
           on c.biAccountID = u.biAccountId join
           tbAccountType t on t.tiAccountTypeID=c.tiAccountTypeID
      where u.iUserId = 1
     ) u
where seqnum = 1
order by u.dtReviewedOn desc;