代码之家  ›  专栏  ›  技术社区  ›  red-X

发送结果集包含的总行数/最后一行数

  •  1
  • red-X  · 技术社区  · 15 年前

    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 .

    1 回复  |  直到 15 年前
        1
  •  2
  •   Martin Smith    15 年前

    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
        )