복붙노트

[SQL] T-SQL 건너 뛰기는 저장 프로 시저를 가지고 가십시오

SQL

T-SQL 건너 뛰기는 저장 프로 시저를 가지고 가십시오

영원히 계속하고 있으며,이 사이트에 낙천주의를 많은 행운을 낳게 될하지 않는 것, 나는 계속 시도합니다. 나는 두 테이블의이 쿼리를 사용하여 결합 된 저널 및 기사 카테고리를 가지고 :

SELECT Journals.JournalId,
       Journals.Year,
       Journals.Title,
       ArticleCategories.ItemText
FROM   Journals
       LEFT OUTER JOIN ArticleCategories
         ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId 

누군가가 내가 건너 뛰기로이 메이크업을 다시 쓸 수있는 방법을 말해 줄 수, 쿼리를 가져 가라. 그것은 처음 n 레코드를 건너 뛰고 그 다음 N를 취할 즉, 내가 원하는. 나는 ROW_NUMBER 참여 어딘가에하지만이 경우에 사용하는 방법을 작동하지 않을 수 있다고 생각합니다.

나는 어려운 내가 뭘하려고 오전 설명을 찾을 수 있다는 것이다 많은 행운이없는 이유를 생각한다. 내 질문이 명확하지 않으면, 내가 잘못을 갈거야 어디 있는지 말해 주저하지 말고 내가 기꺼이 다시 시도하겠습니다. 아마도 나는 또한 저장 프로 시저에 넣고 위해 노력하고 있음을 언급해야한다. 많은 감사합니다. 많은 감사합니다,

해결법

  1. ==============================

    1./ 2,008분의 2,008 2005 R2

    / 2,008분의 2,008 2005 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 
    
  2. ==============================

    2.@Martin 스미스의 정답에 추가 - 그룹에 의해를 사용하는 경우, 당신은 ORDER BY없이 페치 OFFSET 사용할 수 없습니다 :

    @Martin 스미스의 정답에 추가 - 그룹에 의해를 사용하는 경우, 당신은 ORDER BY없이 페치 OFFSET 사용할 수 없습니다 :

    GROUP BY [cols]
    
    ORDER BY [col] ASC|DESC
    
    OFFSET  10 ROWS 
    FETCH NEXT 10 ROWS ONLY 
    

    다음은 " '오프셋'근처의 구문이 잘못되었습니다"를 제공합니다 :

    GROUP BY [cols]
    
    --ORDER BY [col] ASC|DESC
    
    OFFSET  10 ROWS 
    FETCH NEXT 10 ROWS ONLY 
    
  3. from https://stackoverflow.com/questions/5620758/t-sql-skip-take-stored-procedure by cc-by-sa and MIT license