2017-10-05 10 views
0
select top 20 * 
from dbo.DUTs D 
inner join dbo.Statuses S on d.StatusID = s.StatusID 
where s.Description = 'Active' 

上記のSQLクエリは、上位20行を返します。上記のクエリの結果からn番目の行を取得するにはどうすればよいですか?私はn番目の行を見つけるための以前の記事を見て、私の目的のためにそれを使用する明確ではありませんでした。SQLを使用してn番目の行を検索する

ありがとうございました。

+1

をチェックSQLのOFFSETキーワード。レコードのページングで使用されますが、ここでは使用できます。 – xDJR1875

+1

[SQL Serverテーブルでn番目の行を取得するにはどうすればよいですか?](https://stackoverflow.com/questions/2273558/how-do-i-get-the-nth-row-in-a- sql-server-table) – Valli

答えて

1

行の順序は任意です。ORDER BYの式を追加します。次に、次のようなことをすることができます:

SELECT TOP 1 * FROM (SELECT TOP 20 * FROM ... ORDER BY d.StatusID) AS d ORDER BY d.StatusID DESC 

20番目の行を取得します。

SELECT * FROM ... ORDER BY d.StatusID OFFSET 19 ROWS FETCH NEXT 1 ROWS ONLY 

そして第三の選択肢:

また、のようなOFFSETを使用することができます

SELECT * FROM (SELECT *, rownum = ROW_NUMBER() OVER (ORDER BY d.StatusID) FROM ...) AS a WHERE rownum = 20 
0

私は順番に番号が付けられ、私のリストを取得するために、ROW_NUMBER()関数でCTEを使用する傾向があります。 @ zamboneeは言ったように、ORDER BY節が必要になるか、あるいはSQLは毎回異なる順序でそれらを置くことができます。それは通常ではありませんが、あなた自身で注文することなく、同じことを2回得ることは保証されません。ここでは、[DateCreated]フィールド(DATETIME NOT NULL DEFAULT GETDATE())があると仮定しています。これは、通常、レコードが入力されたときにわかるようにするのが良い考えです。これは、「そのテーブルで私のすべてを与えると#1のように、最新の記録と行番号を追加します」と言う:

; WITH AllDUTs 
AS (
    SELECT * 
      , DateCreatedRank = ROW_NUMBER() OVER(ORDER BY [DateCreated] DESC) 
    FROM dbo.DUTs D 
      INNER JOIN dbo.Statuses S ON D.StatusID = S.StatusID 
    WHERE S.Description = 'Active' 
    ) 
SELECT * 
FROM AllDUTs 
WHERE AllDUTs.DateCreatedRank = 20; 
+0

すみません、あなたにお返事ありがとうございます。私はそれを働かせた。もう一度ありがとう。 – user2329418

0
SELECT * FROM (SELECT * FROM EMP ORDER BY ROWID DESC) WHERE ROWNUM<11 
0

それは別のサンプルです:

SELECT * ,CASE WHEN COUNT(0)OVER() =ROW_NUMBER()OVER(ORDER BY number) THEN 1 ELSE 0 END IsNth 
FROM ( 
    select top 10 * 
    from master.dbo.spt_values AS d 
    where d.type='P' 
) AS t 
 
+------+--------+------+-----+------+--------+-------+ 
| name | number | type | low | high | status | IsNth | 
+------+--------+------+-----+------+--------+-------+ 
| NULL | 0  | P | 1 | 1 | 0  | 0  | 
| NULL | 1  | P | 1 | 2 | 0  | 0  | 
| NULL | 2  | P | 1 | 4 | 0  | 0  | 
| NULL | 3  | P | 1 | 8 | 0  | 0  | 
| NULL | 4  | P | 1 | 16 | 0  | 0  | 
| NULL | 5  | P | 1 | 32 | 0  | 0  | 
| NULL | 6  | P | 1 | 64 | 0  | 0  | 
| NULL | 7  | P | 1 | 128 | 0  | 0  | 
| NULL | 8  | P | 2 | 1 | 0  | 0  | 
| NULL | 9  | P | 2 | 2 | 0  | 1  | 
+------+--------+------+-----+------+--------+-------+ 
関連する問題