记录sqlserver2000的一次分页查询

ALTER PROCEDURE [dbo].[p_kcre_zl]
    @name NVARCHAR(100) = NULL,
    @startDate DATETIME = NULL,
    @endDate DATETIME = NULL,
    @pageNumber INT,
    @pageSize INT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @startRow INT, @endRow INT;
    SET @startRow = (@pageNumber - 1) * @pageSize + 1;
    SET @endRow = @pageNumber * @pageSize;

    -- 创建临时表并插入数据
    SELECT
        ym.ypcode, 
        ym.pm, 
        ym.gg, 
        ym.dw, 
        kcre.sl, 
        kcre.dj, 
        (kcre.sl * kcre.dj) AS je, 
        kcre.recode_date AS recodeDate,
        IDENTITY(INT, 1, 1) AS RowNum 
    INTO #TempResults
    FROM
        mzyf..kc_recode kcre
    LEFT JOIN
        ykgl..ymdm ym ON ym.ypcode = kcre.ypcode
    WHERE
        (@name IS NULL OR ym.pm LIKE '%' + @name + '%')
        AND (kcre.recode_date >= @startDate OR @startDate IS NULL)
        AND (kcre.recode_date <= @endDate OR @endDate IS NULL)
    ORDER BY 
        kcre.recode_date DESC;

    -- 选择分页数据(移除别名)
    SELECT
        ypcode, 
        pm, 
        gg, 
        dw, 
        sl, 
        dj, 
        je, 
        recodeDate
    FROM 
        #TempResults
    WHERE 
        RowNum BETWEEN @startRow AND @endRow;

    -- 删除临时表
    DROP TABLE #TempResults;
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值