用offset语法做分页

如下

DECLARE 
    @pageIndex int = 1,
    @pageSize int = 80;

DECLARE @today datetime = CAST(GETDATE() AS DATE);

WITH t AS (
    SELECT 
        ggw.Id, ggw.DaoRuTime,
        ggw.SheBeiBianHaoNType + '-' + ggw.SheBeiBianHaoNQuHua + ggw.SheBeiBianHaoNNum AS SheBeiBianHaoN,
        jms.Id AS bdJmsId,
        ISNULL(jms.Name, '-') AS bdJmsName
    FROM 
        tlw_GuangGaoWei_DianTi ggw
    LEFT JOIN 
        tlw_JiaMengShang_GGW jw
            ON jw.ggwId = ggw.Id 
            AND jw.tStart <= @today 
            AND jw.tEnd >= @today
    LEFT JOIN 
        tlw_JiaMengShang_Info jms
            ON jms.Id = jw.jmsId
)
SELECT 
    ROW_NUMBER() OVER (ORDER BY DaoRuTime ASC) AS RowNum,
    TotalRows = COUNT(*) OVER (),
    Id, DaoRuTime, SheBeiBianHaoN, bdJmsId, bdJmsName
FROM t
where t.DaoRuTime >'2024-01-01'
ORDER BY DaoRuTime ASC
OFFSET ((@pageIndex - 1) * @pageSize) ROWS 
FETCH NEXT @pageSize ROWS ONLY;

 

posted @ 2025-03-19 17:06  法宝  阅读(6)  评论(0)    收藏  举报