1

私はSQLサーバーを使用しており、次のことを達成したいと考えています:

データベースに M 個のレコードがあり、M 個のレコードを要約した N 個のレコードを取得したいと考えています。

次に例を示します。

M = 1000; N = 100;

それらの 1000 レコードから 100 レコードを取得したいのですが、100 レコードは 0 から 1000 でなければなりません (例: 0 番目のレコード、10 番目のレコード、20 番目のレコード、30 番目のレコード... 990 レコード、1000 レコード)。

SQLクエリでこれを達成する最良の方法は何ですか.

よろしくお願いします。

4

1 に答える 1

3

ROW_NUMBER()モジュラス除算でこれを行うことができます:

SELECT *
FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY Col1) RowNum 
      FROM  YourTable
      )sub
WHERE RowNum <= 1000    --M if it's a variable
  AND RowNum % (1000/100) = 0  -- M/N if they're variables

INTEGERID フィールドなどのカウンターが既にある場合は、さらに簡単です。

SELECT *
FROM YourTable
WHERE ID <= 1000
  AND ID % (1000/100) = 0
于 2013-09-25T19:11:27.137 に答える