SQLServerでグループの先頭データを参照する

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

システムトラストでは一緒に働いていただける仲間を募集中です。
記事内に広告が含まれています。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ