【问题标题】:Send the total rows/last row, included with the resultset发送总行数/最后一行,包含在结果集中
【发布时间】:2010-09-16 09:59:24
【问题描述】:

我有这个程序用于获取当前页面上的项目。我还希望包含一个包含项目总数的OUT var,这样我就可以计算总页数。

USE [some_name]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GetFilteredProductDetails]
    @start int,
    @end int
AS
BEGIN
    SET NOCOUNT ON;

        SELECT *
        FROM
        (
            SELECT *, (ROW_NUMBER() OVER (ORDER BY itemid)) AS row
            /* the rest of a big complex query that, so far, works.*/
        ) AS q
        WHERE
        (           
            row BETWEEN @start AND @end
        )
END

这是我当前的(剥离的)查询,我将如何获取内部选择的最后一行/总行数,或者在@start@end 之间的行旁边包含最后一行。

【问题讨论】:

    标签: sql sql-server-2005 paging rowcount


    【解决方案1】:

    COUNT(*) 带有一个空的OVER() 子句将为您提供总行数。如果需要返回最后一行,则可以将其添加到 WHERE 子句中。

    SELECT *
    FROM
    (
        SELECT *, 
        (ROW_NUMBER() OVER (ORDER BY itemid)) AS row,
        COUNT(*) OVER() AS row_count
        /* the rest of a big complex query that, so far, works.*/
    ) AS q
     WHERE
        (           
            row BETWEEN @start AND @end or row=row_count
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2018-06-24
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多