使用SQL函数FIRST_VALUE获取最后一个值

Prz*_*min 0 sql sql-server function sql-server-2016

是否可以使用SQL函数获取排序变量的最后一个值FIRST_VALUE?这是获取最后一个值的方法.

select
[MyVal_Last] = FIRST_VALUE([MyValue]) OVER (PARTITION BY [Category] ORDER BY [MyValue] DESC)  
from tbl
Run Code Online (Sandbox Code Playgroud)

是否可以修改它以获得倒数第二个值?

更新.我熟悉不同的方法来获得最后但提到的一个值,即这里的答案是旧的,并且已经长了很长的胡须.我想知道新版本的SQL Server是否可以使用新功能以更优雅的方式完成它.

Mat*_*lie 5

SELECT
  *
FROM
(
  SELECT
    *, 
    ROW_NUMBER() OVER (PARTITION BY [Category]
                           ORDER BY [MyValue] DESC)   AS ordinal
  FROM
    tbl
)
  ordered_tbl
WHERE
  ordinal = 2
Run Code Online (Sandbox Code Playgroud)