SQL Server 2012 では、OVER が強化され分析関数も使えるようになりました。
OVER 句 (Transact-SQL)
その中に LAST_VALUE があります。
LAST_VALUE (Transact-SQL)
こいつが何を返すのかイマイチわからない。。
with [cte] ( [seq] ) as ( select 1 as [seq] union all select [cte].[seq] + 1 from [cte] where [cte].[seq] < 10 ) select [seq] , first_value( [seq] ) over (order by [seq] ) as [first_value] , first_value( [seq] ) over (order by [seq] % 2) as [first_value_2] , last_value ( [seq] ) over (order by [seq] ) as [last_value] , last_value ( [seq] ) over (order by [seq] % 2) as [last_value_2] from [cte]
FIRST_VALUE はちゃんと最初の行なのに、LAST_VALUE は ORDER BY で指定した最初の行の値ですが、LAST_VALUE は ORDER BY で同じ順位の中での最後の値になってる?
イマイチ動きがわからん。。
ちゃんと読んでませんが、こんな記事もありました。
SQL Server 2012 – First Value Last Value