<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0</id>
	<title>SQL Server - ROW NUMBER関数 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0&amp;action=history"/>
	<updated>2026-04-25T10:57:45Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0&amp;diff=13201&amp;oldid=prev</id>
		<title>Wiki: /* 概要 */</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0&amp;diff=13201&amp;oldid=prev"/>
		<updated>2025-01-17T06:03:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;概要&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年1月17日 (金) 15:03時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot;&gt;17行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;17行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;また、&amp;lt;code&amp;gt;ROW_NUMBER&amp;lt;/code&amp;gt;関数は、他のウィンドウ関数 (RANK, DENSE_RANK) と組み合わせることにより、柔軟なデータ分析が可能になる。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;また、&amp;lt;code&amp;gt;ROW_NUMBER&amp;lt;/code&amp;gt;関数は、他のウィンドウ関数 (RANK, DENSE_RANK) と組み合わせることにより、柔軟なデータ分析が可能になる。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;u&amp;gt;ただし、大量データに対して使用する場合は、パフォーマンスに注意する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;u&amp;gt;ただし、大量データに対して使用する場合は、パフォーマンスに注意する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;また、SQL Serverには、連番を振る関数として他にもRANK関数が存在する。&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RANK関数は、同じ順位に同じ番号を振るが、同じ順位でも異なる番号を振るものがROW_NUMBER関数である。&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ROW_NUMBER関数が使用できるデータベースを以下に示す。&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* SQL Server&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Oracle Database&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* PostgreSQL&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mochiu_wiki:diff:1.41:old-13200:rev-13201:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
	<entry>
		<id>https://mochiu.net/index.php?title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0&amp;diff=13200&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == ROW_NUMBER関数は、SQL Serverで結果セット内の各行に一意の連番を割り当てるウィンドウ関数である。&lt;br&gt; この関数は、データの順序付け、ページング、重複行の特定等で使用される。&lt;br&gt; &lt;br&gt;  &lt;syntaxhighlight lang=&quot;tsql&quot;&gt;  ROW_NUMBER() OVER (     [PARTITION BY &lt;カラム1&gt;, &lt;カラム2&gt;, ...]     ORDER BY &lt;カラム1&gt; [ASC|DESC], &lt;カラム2&gt; [ASC|DESC], ...  )  &lt;/syntaxhighlight&gt; &lt;br&gt; &lt;u&gt;※…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=SQL_Server_-_ROW_NUMBER%E9%96%A2%E6%95%B0&amp;diff=13200&amp;oldid=prev"/>
		<updated>2025-01-17T01:28:17Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == ROW_NUMBER関数は、SQL Serverで結果セット内の各行に一意の連番を割り当てるウィンドウ関数である。&amp;lt;br&amp;gt; この関数は、データの順序付け、ページング、重複行の特定等で使用される。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;  ROW_NUMBER() OVER (     [PARTITION BY &amp;lt;カラム1&amp;gt;, &amp;lt;カラム2&amp;gt;, ...]     ORDER BY &amp;lt;カラム1&amp;gt; [ASC|DESC], &amp;lt;カラム2&amp;gt; [ASC|DESC], ...  )  &amp;lt;/syntaxhighlight&amp;gt; &amp;lt;br&amp;gt; &amp;lt;u&amp;gt;※…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
ROW_NUMBER関数は、SQL Serverで結果セット内の各行に一意の連番を割り当てるウィンドウ関数である。&amp;lt;br&amp;gt;&lt;br /&gt;
この関数は、データの順序付け、ページング、重複行の特定等で使用される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;&lt;br /&gt;
 ROW_NUMBER() OVER (&lt;br /&gt;
    [PARTITION BY &amp;lt;カラム1&amp;gt;, &amp;lt;カラム2&amp;gt;, ...]&lt;br /&gt;
    ORDER BY &amp;lt;カラム1&amp;gt; [ASC|DESC], &amp;lt;カラム2&amp;gt; [ASC|DESC], ...&lt;br /&gt;
 )&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;code&amp;gt;ROW_NUMBER&amp;lt;/code&amp;gt;関数は必ず&amp;lt;code&amp;gt;ORDER BY&amp;lt;/code&amp;gt;句を必要とする。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;これが無い場合、レコードの順序が不定となるため、期待した結果が得られない可能性がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;また、同値の場合の順序も明確に指定することが推奨される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、&amp;lt;code&amp;gt;ROW_NUMBER&amp;lt;/code&amp;gt;関数は、他のウィンドウ関数 (RANK, DENSE_RANK) と組み合わせることにより、柔軟なデータ分析が可能になる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;ただし、大量データに対して使用する場合は、パフォーマンスに注意する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PARTITIONキーワード ==&lt;br /&gt;
PARTITIONキーワードを使用する場合、指定した列でグループ分けを行い、各グループ内で個別に連番を振ることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
例えば、部署ごとに従業員の給与順位を付ける。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ employeesテーブル&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 列名 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | データ型 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 説明&lt;br /&gt;
|-&lt;br /&gt;
| employee_id || INT || 従業員ID (主キー)&lt;br /&gt;
|-&lt;br /&gt;
| employee_name || VARCHAR(100) || 従業員名&lt;br /&gt;
|-&lt;br /&gt;
| department_name || VARCHAR(50) || 部署名&lt;br /&gt;
|-&lt;br /&gt;
| salary || DECIMAL(10,2) || 給与&lt;br /&gt;
|-&lt;br /&gt;
| hire_date || DATE || 入社日&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ employeesテーブル&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | employee_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | employee_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | department_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | salary &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | hire_date&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 山田太郎 || 営業部 || 350000.00 || 2022-04-01&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 鈴木花子 || 営業部 || 380000.00 || 2021-08-15&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 佐藤次郎 || 技術部 || 420000.00 || 2020-11-01&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 田中美咲 || 技術部 || 400000.00 || 2021-03-20&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT &lt;br /&gt;
    department_name,&lt;br /&gt;
    employee_name,&lt;br /&gt;
    salary,&lt;br /&gt;
    ROW_NUMBER() OVER (&lt;br /&gt;
       PARTITION BY department_name &lt;br /&gt;
       ORDER BY salary DESC&lt;br /&gt;
    ) as salary_rank&lt;br /&gt;
 FROM employees;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
上記のクエリでは、部署 (department_name) でグループ化して、各部署内で給与 (salary) の高い順に順位付けを行っている。&amp;lt;br&amp;gt;&lt;br /&gt;
そのため、営業部と技術部それぞれでsalary_rankが1から始まっている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ 実効結果 (部署ごとの給与ランキング)&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | department_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | employee_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | salary &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | salary_rank&lt;br /&gt;
|-&lt;br /&gt;
| 営業部 || 鈴木花子 || 380000.00 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 営業部 || 山田太郎 || 350000.00 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 技術部 || 佐藤次郎 || 420000.00 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 技術部 || 田中美咲 || 400000.00 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 重複レコードの除外 ==&lt;br /&gt;
ROW_NUMBER関数の主な用途として、重複行の除外がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
同一データが複数存在する場合、各グループの最初のレコードのみを取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ ordersテーブル&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 列名 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | データ型 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 説明&lt;br /&gt;
|-&lt;br /&gt;
| order_id || INT || 注文ID (主キー)&lt;br /&gt;
|-&lt;br /&gt;
| customer_id || INT || 顧客ID&lt;br /&gt;
|-&lt;br /&gt;
| order_date || DATETIME || 注文日時&lt;br /&gt;
|-&lt;br /&gt;
| total_amount || DECIMAL(10,2) || 注文合計金額&lt;br /&gt;
|-&lt;br /&gt;
| status || VARCHAR(20) || 注文状態&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ ordersテーブル&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | order_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | customer_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | order_date &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | total_amount !! status&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 101 || 2024-01-15 10:30:00 || 15000.00 || 完了&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 101 || 2024-01-16 14:20:00 || 8500.00 || 完了&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 102 || 2024-01-16 15:45:00 || 12000.00 || 処理中&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 101 || 2024-01-17 09:10:00 || 22000.00 || 処理中&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;&lt;br /&gt;
 WITH numbered_rows AS (&lt;br /&gt;
    SELECT *,&lt;br /&gt;
       ROW_NUMBER() OVER (&lt;br /&gt;
          PARTITION BY customer_id &lt;br /&gt;
          ORDER BY order_date DESC&lt;br /&gt;
       ) as row_num&lt;br /&gt;
    FROM orders&lt;br /&gt;
 )&lt;br /&gt;
 SELECT * FROM numbered_rows &lt;br /&gt;
 WHERE row_num = 1;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
上記のクエリでは、顧客 (customer_id) ごとにグループ化して、注文日時 (order_date) の新しい順に番号を付けて、その中から、row_num = 1 のレコード (各顧客の最新の注文) のみを抽出している。&amp;lt;br&amp;gt;&lt;br /&gt;
そのため、customer_id = 101 の人の3件の注文のうち、最も新しい注文 (order_id = 4) のみが表示されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ 実効結果 (顧客ごとの最新注文)&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | order_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | customer_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | order_date &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | total_amount &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | status &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | row_num&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 101 || 2024-01-17 09:10:00 || 22000.00 || 処理中 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 102 || 2024-01-16 15:45:00 || 12000.00 || 処理中 || 1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ページング処理 ==&lt;br /&gt;
大量のデータをページング処理する場合にも有効である。&amp;lt;br&amp;gt;&lt;br /&gt;
例えば、100件ずつデータを取得する場合、ROW_NUMBER関数を使用して特定のページのレコードのみを効率的に抽出することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、商品カタログを想定したテーブルである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ productsテーブルの構造&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 列名 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | データ型 &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | 説明&lt;br /&gt;
|-&lt;br /&gt;
| product_id || INT || 商品ID (主キー)&lt;br /&gt;
|-&lt;br /&gt;
| product_name || VARCHAR(100) || 商品名&lt;br /&gt;
|-&lt;br /&gt;
| category || VARCHAR(50) || カテゴリ&lt;br /&gt;
|-&lt;br /&gt;
| price || DECIMAL(10,2) || 価格&lt;br /&gt;
|-&lt;br /&gt;
| created_at || DATETIME || 商品登録日時&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ サンプルデータ&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | category &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | price &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | created_at&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ノートパソコン A || 電化製品 || 89800.00 || 2024-01-10 10:00:00&lt;br /&gt;
|-&lt;br /&gt;
| 2 || タブレット B || 電化製品 || 45800.00 || 2024-01-10 11:30:00&lt;br /&gt;
|-&lt;br /&gt;
| 3 || スマートフォン C || 電化製品 || 79800.00 || 2024-01-11 09:15:00&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ヘッドフォン D || アクセサリー || 12800.00 || 2024-01-11 14:20:00&lt;br /&gt;
|-&lt;br /&gt;
| 5 || ワイヤレスマウス E || アクセサリー || 4800.00 || 2024-01-12 16:45:00&lt;br /&gt;
|-&lt;br /&gt;
| 6 || モニター F || 電化製品 || 34800.00 || 2024-01-13 10:30:00&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 1ページあたり2件のレコードを表示する場合のページング処理&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;&lt;br /&gt;
 WITH numbered_products AS (&lt;br /&gt;
    SELECT &lt;br /&gt;
       *,&lt;br /&gt;
       ROW_NUMBER() OVER (&lt;br /&gt;
          ORDER BY created_at DESC&lt;br /&gt;
       ) as row_num&lt;br /&gt;
    FROM products&lt;br /&gt;
 )&lt;br /&gt;
 SELECT &lt;br /&gt;
    product_id,&lt;br /&gt;
    product_name,&lt;br /&gt;
    category,&lt;br /&gt;
    price,&lt;br /&gt;
    created_at&lt;br /&gt;
 FROM numbered_products&lt;br /&gt;
 WHERE row_num BETWEEN (@page_number - 1) * @page_size + 1 AND @page_number * @page_size;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ @page_number = 1, @page_size = 2 の場合の実行結果&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | category &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | price &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | created_at&lt;br /&gt;
|-&lt;br /&gt;
| 6 || モニター F || 電化製品 || 34800.00 || 2024-01-13 10:30:00&lt;br /&gt;
|-&lt;br /&gt;
| 5 || ワイヤレスマウス E || アクセサリー || 4800.00 || 2024-01-12 16:45:00&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | style=&amp;quot;background-color:#fefefe;&amp;quot;&lt;br /&gt;
|+ @page_number = 2, @page_size = 2 の場合の実行結果&lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_id &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | product_name &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | category &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | price &lt;br /&gt;
! style=&amp;quot;background-color:#66CCFF;&amp;quot; | created_at&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ヘッドフォン D || アクセサリー || 12800.00 || 2024-01-11 14:20:00&lt;br /&gt;
|-&lt;br /&gt;
| 3 || スマートフォン C || 電化製品 || 79800.00 || 2024-01-11 09:15:00&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
総ページ数を取得する場合は、以下に示すようなクエリを追加で実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、total_pages は 3  (6件 / 2件) となる。&amp;lt;br&amp;gt;&lt;br /&gt;
ROW_NUMBER関数とパラメータを組み合わせることにより、効率的なページング処理が実現できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;tsql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT CEILING(COUNT(*) * 1.0 / @page_size) as total_pages&lt;br /&gt;
 FROM products;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:SQL_Server]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>