SQL Server2012のページ付け

アフマド・アルカワジャ

私はこのテーブル定義を持っています

CREATE TABLE [dbo].[Earnings](
    [Name] [nvarchar](50) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Earnings] [decimal](18, 2) NOT NULL
)

私はこのサンプルデータを持っています

INSERT INTO [dbo].[Earnings] ([name], [Date], [Earnings])
VALUES
('person1',  datefromparts(2015, 9, 1), 9.01),
('person1',  datefromparts(2015, 10, 5), 10.05),
('person1',  datefromparts(2015, 11, 21), 11.21),
('person1',  datefromparts(2016, 1, 11), 1.12),
('person1',  datefromparts(2016, 3, 13), 3.13),
('person1',  datefromparts(2016, 5, 15), 5.15),
('person2',  datefromparts(2016, 6, 16), 6.16),
('person2',  datefromparts(2016, 8, 18), 8.18)

ページネーションを行うと、次の2つのSQLステートメントで常に同じ結果が得られますが、この問題の理由を知りたいですか?そしてそれを修正するための可能な方法は何ですか?

SELECT  *  FROM [dbo].Earnings  order by Name   OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY ;
SELECT  *  FROM [dbo].Earnings  order by Name   OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ;

両方の実行で得られる結果

Name    Date    Earnings
person1 2015-11-21 00:00:00.000 11.21
person1 2015-10-05 00:00:00.000 10.05
TheGameiswar

Order byは決定論的である必要があります。つまり、任意の列に同じ値が含まれ、order by句で使用される場合、SQLは任意の行を選択/選択できます。したがって、決定論的順序を作成するには、orderby列は一意である必要があります。

あなたの場合、使用

SELECT  *  FROM [dbo].Earnings  order by Name,date   OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY ;
SELECT  *  FROM [dbo].Earnings  order by Name,date   OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL Server2012のページングとサブクエリ

分類Dev

SQL Server2012の日付列をPIVOT

分類Dev

SQL Server2012のストアドプロシージャ

分類Dev

SQL Server2012の平均とケース

分類Dev

SQL Server2012エラーの復元

分類Dev

SQL Server2012のデータ変換

分類Dev

SQL Server2012のRANDBETWEEN

分類Dev

SQL Server2012のOUTERAPLY関連テーブルのマージレコード

分類Dev

SQL Server2012の週番号と曜日からの日付

分類Dev

SQL Server2012クエリでの日付の使用

分類Dev

SQL Server2012でのSQLインジェクション

分類Dev

SQL Server2012の通常のストアドプロシージャ内でストアドプロシージャ名を見つける方法

分類Dev

SQL Server 2008R2での効率的なページ付け

分類Dev

SQL Server2012クエリ/ジョブ

分類Dev

MS SQL Server2012の別のテーブルから条件付きの最新の行を取得する

分類Dev

SQL Server2012での複数の日付とティッカーのRSIの計算

分類Dev

SQL Server2012データベースクエリの問題

分類Dev

SQL Server2012のパフォーマンスの問題

分類Dev

SQL Server2012でのMergewithTriggerの使用

分類Dev

SQL Server2012のローリング期間ランク

分類Dev

SQL Server2012のアンインストール

分類Dev

SQL Server2012の再帰的減衰平均

分類Dev

SQL Server2012のSTRING_SPLIT

分類Dev

SQL Server2012の同時挿入

分類Dev

SQL Server2012で同等のOracleAUDSID

分類Dev

SQL Server2012クエリの混乱

分類Dev

動的SQL結果のページ付け

分類Dev

SQL Server2012で更新するのは日付の一部のみです

分類Dev

SQL Server2012での文字列型の日付による並べ替え

Related 関連記事

ホットタグ

アーカイブ