1

現在のページのアイテムを取得するためにこの手順を使用しています。OUTまた、合計ページ数を計算できるように、アイテムの合計数を持つ変数を含めたいと思います。

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

4

1 に答える 1

2

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
    )
于 2010-09-16T10:02:08.407 に答える