选择前 N 行 [重复]

Posted

技术标签:

【中文标题】选择前 N 行 [重复]【英文标题】:Selecting Top N rows [duplicate] 【发布时间】:2014-08-08 18:37:26 【问题描述】:

每个人都知道这个用于选择顶部行的简单 SQL 查询

    SELECT TOP 2 CostPrice

    FROM dbo.tblItemsQueue

    WHERE ItemCode='P0022'

    ORDER BY AddedDate ASC

当它用 TOP 给出一个确切的数字时很清楚(例如:- TOP 100)。但是根据我的程序,我无法给出确切的数字。取而代之的是,我必须输入一个带有“TOP”的变量(例如:-N)(即:-SELECT TOP N CostPrice.....)并通过从C#传递一个值来分配该变量

如何在 SQL Server 中做到这一点?我使用了以下方法,但显示错误。

    @Qty int

    AS

    SELECT TOP @Qty CostPrice

    FROM dbo.tblItemsQueue

    WHERE ItemCode='P0022'

    ORDER BY AddedDate ASC        

【问题讨论】:

这其实是一个很好的问题。 【参考方案1】:

当使用变量来限制行数时,您必须将变量括在括号中。

@Qty int

AS

SELECT TOP (@Qty) CostPrice

FROM dbo.tblItemsQueue

WHERE ItemCode='P0022'

ORDER BY AddedDate ASC  

【讨论】:

【参考方案2】:

在变量周围添加括号

然后你得到

SELECT TOP (@Qty) Costprice ... 

但是这只适用于 sql 2005 +

【讨论】:

以上是关于选择前 N 行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

选择“编辑前'N'行”时更改顺序

基于两个字段的某些字段选择行并删除重复项并限制为前十名?

为每个组选择前 N 行

从表中选择前 N 行

选择前 N 行,其中 TEXT 字段的长度总和达到某个限制

如何从 T-SQL 中的表中选择前 N 行?