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でグループの先頭データを参照する」の紹介でした。