Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL跳取存储过程_Sql_Sql Server_Tsql_Pagination - Fatal编程技术网

T-SQL跳取存储过程

T-SQL跳取存储过程,sql,sql-server,tsql,pagination,Sql,Sql Server,Tsql,Pagination,我在这个网站上似乎运气不太好,但我永远都是乐观主义者,我会继续努力。 我有两个表、日记账和ArticleCategories,它们使用此查询联接: SELECT Journals.JournalId, Journals.Year, Journals.Title, ArticleCategories.ItemText FROM Journals LEFT OUTER JOIN ArticleCategories ON J

我在这个网站上似乎运气不太好,但我永远都是乐观主义者,我会继续努力。 我有两个表、日记账和ArticleCategories,它们使用此查询联接:

SELECT Journals.JournalId,
       Journals.Year,
       Journals.Title,
       ArticleCategories.ItemText
FROM   Journals
       LEFT OUTER JOIN ArticleCategories
         ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId 
有人能告诉我如何把它重新写进一个Skip,Take查询吗。 换句话说,我希望它跳过前n条记录,然后取下n条。 我认为ROW_编号涉及某个地方,但我不知道在这种情况下如何使用它

我怀疑我运气不好的原因是我发现很难解释我想做什么。 如果我的问题不清楚,请毫不犹豫地告诉我哪里出了问题,我很乐意再试一次。 也许我还应该提到,我正试图将其放入一个存储过程中。 非常感谢。
非常感谢,2005/2008/2008 R2

;WITH cte AS
(
    SELECT  Journals.JournalId, 
            Journals.Year, 
            Journals.Title, 
            ArticleCategories.ItemText,
            ROW_NUMBER() OVER 
                     (ORDER BY Journals.JournalId,ArticleCategories.ItemText) AS RN
    FROM    Journals LEFT OUTER JOIN
            ArticleCategories 
             ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
)
    SELECT  JournalId, 
            Year, 
            Title, 
            ItemText
FROM cte
WHERE RN BETWEEN 11 AND 20
对于2012年来说,这更简单

SELECT Journals.JournalId,
       Journals.Year,
       Journals.Title,
       ArticleCategories.ItemText
FROM   Journals
       LEFT OUTER JOIN ArticleCategories
         ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
ORDER  BY Journals.JournalId,
          ArticleCategories.ItemText 
OFFSET  10 ROWS 
FETCH NEXT 10 ROWS ONLY 

除了@Martin Smith的正确答案外,当使用
分组依据时,如果没有
订单依据,则不能使用
偏移提取

GROUP BY [cols]

ORDER BY [col] ASC|DESC

OFFSET  10 ROWS 
FETCH NEXT 10 ROWS ONLY 
下面给出了“偏移量”附近不正确的语法:


前n条记录
-按什么顺序排列?很好!我忘了说它需要订购什么东西。请允许我再次向您提出要求,并询问如何包括按期刊的订单。年度?非常感谢Martin。很抱歉我之前的评论Martin。如果我更仔细一点的话,我会注意到你已经包括了一份订单声明。再次感谢你,太棒了!谢谢你,马丁,效果很好。非常感谢。
GROUP BY [cols]

--ORDER BY [col] ASC|DESC

OFFSET  10 ROWS 
FETCH NEXT 10 ROWS ONLY