Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (E-O)

 

LAST_VALUE 函数 [Aggregate]

从窗口最后一行返回值。

语法
LAST_VALUE( expression[ { RESPECT | IGNORE } NULLS ] )
OVER ( window-spec )
window-spec:请参见下面的“注释”部分
参数
  • expression   要计算的表达式。例如,列名。

返回值

参数的数据类型。

注释

LAST_VALUE 函数使您不用自连接就能(依照某种排序)选择表中的最后一个值。如果您希望使用最后一个值作为计算的基准,此函数很有价值。

LAST_VALUE 函数在完成 ORDER BY 后从分区提取最后一个记录。然后针对最后一个记录计算 expression 并返回结果。

如果指定 IGNORE NULL,则返回 expression 的最后一个非 NULL 值。如果指定 RESPECT NULLS(缺省值),则会返回最后一个值,无论其是否为 NULL。

LAST_VALUE 函数与其它大多数集合函数的不同之处在于:该函数只能与窗口说明一起使用。

可以在函数语法中指定 window-spec 的元素(内置),也可以将这些元素与 SELECT 语句中的 WINDOW 子句一并加以指定。请参见WINDOW 子句中提供的 window-spec 定义。

有关在 SELECT 语句中使用窗口函数的详细信息(包括工作示例),请参见窗口函数

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下示例返回每个雇员的工资以及在同一部门中工资最高的雇员的姓名:

SELECT GivenName + ' ' + Surname AS employee_name, 
       Salary, DepartmentID,
       LAST_VALUE( employee_name ) OVER Salary_Window AS highest_paid
FROM Employees
WINDOW Salary_Window AS ( PARTITION BY DepartmentID ORDER BY Salary 
                          RANGE BETWEEN UNBOUNDED PRECEDING 
                          AND UNBOUNDED FOLLOWING );
employee_name Salary DepartmentID highest_paid
Michael Lynch 24903 500 Jose Martinez
Joseph Barker 27290 500 Jose Martinez
Sheila Romero 27500 500 Jose Martinez
Felicia Kuo 28200 500 Jose Martinez
Jeannette Bertrand 29800 500 Jose Martinez
Jane Braun 34300 500 Jose Martinez
Anthony Rebeiro 34576 500 Jose Martinez
Charles Crowley 41700 500 Jose Martinez
Jose Martinez 55500.8 500 Jose Martinez
Doug Charlton 28300 400 Scott Evans
Elizabeth Lambert 29384 400 Scott Evans
Joyce Butterfield 34011 400 Scott Evans
Robert Nielsen 34889 400 Scott Evans
Alex Ahmed 34992 400 Scott Evans
Ruth Wetherby 35745 400 Scott Evans
... ... ... ...

Jose Martinez 在部门 500 中工资最高,Scott Evans 在部门 400 中工资最高。