2016-09-01 17 views
2

トップ10の行の次の20行を選択しようとしています。あなたは、データセットの行番号付けを定義するためにCTE(共通テーブル式)のようなものとROW_NUMBERを使用する必要がトップ10の次の20行を選択してください。

select TOP 20 * 
from memberform 
where Row_Number over(10) 
+0

を参照してください? –

+0

最初の10行の後に次の20行を選択したいと思います.SQLに行の増分がありませんか? – DiH

+0

テーブルの最初の10行をどのように決定しましたか? 'SELECT TOP 10 * FROM T' は10の任意の行を返します。たぶん、あなたは次の質問で10点満点になるでしょう。あなたは 'ORDER BY'を必要とします –

答えて

4

- その中から選択をしたい行のセットのためのCTEの番:

;WITH PagingCte AS 
(
    SELECT 
     (list of columns), 
     RowNum = ROW_NUMBER() OVER (ORDER BY -some-column-of-yours-) 
    FROM 
     dbo.memberform 
) 
SELECT 
    (list of columns) 
FROM 
    PagingCte 
WHERE 
    RowNum BETWEEN 10 AND 29 

ウィンドウ機能では、を定義する必要があります。これは、行の番号付け方法(日付順、IDなど)を定義します。を注文する明示的ななし

は、持っていたされた最初の10の後には次の20は

+0

私は間に使えますか?テーブルから20〜40の行を選択してトップ20 *を選択しますか? – DiH

+0

@DiH:** no ** - SQL Serverには自動的に組み込まれた行番号付けがありません。そして、再び:明示的な注文なし**、順序はないので、あなたは次の10を得ることができません - 次の10 **は何から注文?** –

+0

私は選択*を使用しますか? – DiH

0
WITH T AS 
(
SELECT TOP 30 name, 
     row_number() OVER (ORDER BY id) AS RN 
FROM memberform 
ORDER BY id 
) 
SELECT 
     MAX(CASE WHEN RN <=10 THEN name END) AS Col1, 
     MAX(CASE WHEN RN > 10 THEN name END) AS Col2 
FROM T  
GROUP BY RN % 10 
1

あなたはオフセット句を意味しています。..ありませんか?

OFFSETは、最初のレコードセットを除外します。 OFFSETはORDER BY句でのみ使用できます。 OFFSET FETCH NEXTは、定義されたレコード・ウィンドウを戻します。 OFFSET FETCH NEXTは、改ページサポートを構築するのに最適です。最初のn個のレコードを除外するために

一般的な構文は次のとおりです。

SELECT column-names 
    FROM table-name 
    ORDER BY column-names 
    OFFSET n ROWS 

テーブルには何の固有の順序を持​​っていないので、あなたが注文したいん何列(複数可)で、http://www.dofactory.com/sql/order-by-offset-fetch

+0

SQL Server 2008にはオフセットがありますか? – jarlh

+0

これはSQL Server ** 2012 ** **の新機能**ですので、SQL Server 2008でOPには利用できません。 –

+0

SQL Server ** 2008 ** – Serg

関連する問題