私はこのサイトであまり運がないようです、それでも永遠に楽観主義者です、私は努力し続けます。このクエリを使用して結合されるJournalsとArticleCategoriesの2つのテーブルがあります。
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_NUMBERはどこかに関係していると思いますが、この場合の使い方がわかりません。
運が悪いのは、自分がやろうとしていることを説明するのが難しいからだと思います。質問が明確でない場合は、どこが間違っているのかを遠慮なく教えてください。喜んで再試行します。おそらく、これをストアドプロシージャに入れようとしていることにも言及する必要があります。どうもありがとう。どうもありがとう、
2005/2008/2008R2の場合
;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
を使用する場合、OFFSET-FETCH
なしでORDER BY
を使用することはできません。
GROUP BY [cols]
ORDER BY [col] ASC|DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY
以下は、「 'OFFSET'の近くの誤った構文」を示しています。
GROUP BY [cols]
--ORDER BY [col] ASC|DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY