【问题标题】:SQL Server 2005 equivalent of OFFSET / FETCH [duplicate]SQL Server 2005相当于OFFSET / FETCH [重复]
【发布时间】:2012-12-25 05:19:57
【问题描述】:

可能重复:
LIMIT 10..20 in sqlserver

我尝试在 SQL Server 2005 中使用以下代码(写于 2012 年):

SELECT *
FROM  (SELECT TOP (100) PERCENT ID_BADGE,
                                DATE_TRX,
                                CODE_TRX,
                                SEQ_REC
       FROM   omi.DCUTRX_ZERO
       UNION ALL
       SELECT TOP (100) PERCENT ID_BADGE,
                                DATE_TRX,
                                CODE_TRX,
                                SEQ_REC
       FROM   omi.TAHIST_ZERO) OMI
WHERE  ( ID_BADGE = '     ' + @Badge )
       AND ( DATE_TRX BETWEEN @Date AND @Date2 )
       AND ( SEQ_REC IN ( '0', '1000' ) )
       AND ( CODE_TRX IN ( '100', '101' ) ) 
    OFFSET 1 ROWS 
    FETCH NEXT 2 ROWS ONLY 

谁能告诉我相当于 SQL Server 2005 的版本?

【问题讨论】:

标签: sql-server-2005


【解决方案1】:
SELECT  ID_BADGE, DATE_TRX, CODE_TRX, SEQ_REC
FROM    (
        SELECT  *, ROW_NUMBER() OVER (ORDER BY DATE_TRX) rn
        FROM    (
                SELECT  ID_BADGE, DATE_TRX, CODE_TRX, SEQ_REC
                FROM    omi.DCUTRX_ZERO
                UNION ALL
                SELECT  ID_BADGE, DATE_TRX, CODE_TRX, SEQ_REC
                FROM    omi.TAHIST_ZERO
                ) q
       WHERE    ID_BADGE = '     ' + @Badge
                AND DATE_TRX BETWEEN @Date AND @Date2
                AND SEQ_REC IN ('0', '1000')
                AND CODE_TRX IN ('100', '101')
       ) q
WHERE  rn BETWEEN 2 AND 3
ORDER BY
       DATE_TRX

请注意,您需要 SQL Server 中的某种ORDER BY 才能使ROW_NUMBER 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2020-10-02
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2013-02-08
    相关资源
    最近更新 更多