SQLServerでグループの先頭データを参照する
SQLServerでグループの先頭データを参照する方法を紹介します。
コーディング例
BEGIN
-- テンポラリテーブル作成
CREATE TABLE #TMP(
Year INT
,YMD INT
)
-- 初期データ追加
INSERT INTO #TMP
VALUES
(2020, 20200101)
,(2020, 20200225)
,(2020, 20201018)
,(2021, 20210204)
,(2021, 20210811)
,(2021, 20211122)
;
-- 先頭データを参照
SELECT
Year
,YMD
,FIRST_VALUE(YMD) OVER (PARTITION BY Year ORDER BY YMD) AS [先頭データ]
FROM
#TMP
;
-- テンポラリテーブル削除
DROP TABLE #TMP;
END
実行結果
| Year | YMD | 先頭データ |
|---|---|---|
| 2020 | 20200101 | 20200101 |
| 2020 | 20200225 | 20200101 |
| 2020 | 20201018 | 20200101 |
| 2021 | 20210204 | 20210204 |
| 2021 | 20210811 | 20210204 |
| 2021 | 20211122 | 20210204 |
24行目でFIRST_VALUE関数を使用して先頭データを参照しています。
OVER句のPARTITION BYでグループ化するカラムを指定し、ORDER BYで並び順を指定したうえで先頭データを決定しています。
以上、「SQLServerでグループの先頭データを参照する」の紹介でした。








