Last_Value 返回多条记录

Joh*_*nnB 1 sql sql-server performance sql-server-2016

我有一个表 (SROEnquiry),如下面的快照所示:Data.jpg

我正在使用Last_Value()获取表上每个 StudentNumberstudent 的最后一个条目。StudentNumber 'Y1293926' 用作示例。

脚本如下:

SELECT DISTINCT(StudentNumber),
       LAST_VALUE(Arrears) OVER 
       (PARTITION BY StudentNumber ORDER BY RecordID) AS LastValue  
FROM SROEnquiry 
WHERE StudentNumber = 'Y1293926'
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此处输入图片说明

预期的结果是:

StudentNumber   LastValue
Y1293926        0.00
Run Code Online (Sandbox Code Playgroud)

它带回 4 个值而不是一个值的脚本有什么问题?

Tim*_*sen 5

您需要使用以下命令指定正确的框架LAST_VALUE

SELECT DISTINCT
    StudentNumber,
    LAST_VALUE(Arrears) OVER (PARTITION BY StudentNumber ORDER BY RecordID
        ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS LastValue  
FROM SROEnquiry 
WHERE StudentNumber = 'Y1293926'
Run Code Online (Sandbox Code Playgroud)