sql >> データベース >  >> RDS >> Sqlserver

列の次の null でない値を取得する SQL

    1 つの方法は、outer apply を使用することです。 :

    select t.*, t2.orig as newval
    from @t t outer apply
         (select top 1 t2.*
          from @t t2
          where t2.id >= t.id and t2.orig is not null
          order by t2.id
         ) t2;
    

    ウィンドウ関数 (SQL Server 2012 以降) でこれを行う方法の 1 つは、id の累積最大値を逆順で使用することです。

    select t.*, max(orig) over (partition by nextid) as newval
    from (select t.*,
                 min(case when orig is not null then id end) over (order by id desc) as nextid
          from @t
         ) t;
    

    サブクエリは、次の非 NULL の値を取得します ID。外側のクエリは orig を広げます 同じ id を持つすべての行の値 (同じ nextid を持つ行のグループであることを思い出してください) 、非 NULL を持つのは 1 つだけです orig の値 ).




    1. MySQL:mysqlへのリモート接続を許可する方法

    2. jqGrid-新しい行の一意のID

    3. MySQLロードエラーを修正するにはどうすればよいですか

    4. NULL =NULLの場合、テーブルから削除するとはどういう意味ですか?