FIRST_VALUE (Transact-SQL)
返回 SQL Server 2014 中有序值集中的第一个值。
适用范围:SQL Server(SQL Server 2012 到当前版本)。 |
语法
FIRST_VALUE ( [scalar_expression ] )
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
参数
scalar_expression
是要返回的值。 scalar_expression 可以是列、子查询或可导致单个值的其他任意表达式。 不允许使用其他分析函数。OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
partition_by_clause 将由 FROM 子句生成的结果集划分成 RANK 函数适用的分区。 如果未指定,则此函数将查询结果集的所有行视为单个组。 order_by_clause 确定对执行此操作的逻辑顺序。 order_by_clause 是必需的。 rows_range_clause 通过指定起点和终点,限制分区中的行数。 有关详细信息,请参阅 OVER 子句 (Transact-SQL)。
返回类型
与 scalar_expression 类型相同。
一般备注
FIRST_VALUE 具有不确定性。 有关详细信息,请参阅确定性函数和不确定性函数。
示例
A.对查询结果集使用 FIRST_VALUE
以下示例使用 FIRST_VALUE 返回给定产品类别中价格最低廉的产品的名称。
USE AdventureWorks2012;
GO
SELECT Name, ListPrice,
FIRST_VALUE(Name) OVER (ORDER BY ListPrice ASC) AS LeastExpensive
FROM Production.Product
WHERE ProductSubcategoryID = 37;
下面是结果集:
Name ListPrice LeastExpensive
----------------------- --------------------- --------------------
Patch Kit/8 Patches 2.29 Patch Kit/8 Patches
Road Tire Tube 3.99 Patch Kit/8 Patches
Touring Tire Tube 4.99 Patch Kit/8 Patches
Mountain Tire Tube 4.99 Patch Kit/8 Patches
LL Road Tire 21.49 Patch Kit/8 Patches
ML Road Tire 24.99 Patch Kit/8 Patches
LL Mountain Tire 24.99 Patch Kit/8 Patches
Touring Tire 28.99 Patch Kit/8 Patches
ML Mountain Tire 29.99 Patch Kit/8 Patches
HL Road Tire 32.60 Patch Kit/8 Patches
HL Mountain Tire 35.00 Patch Kit/8 Patches
B.对分区使用 FIRST_VALUE
以下示例使用 FIRST_VALUE 返回与同职务的其他员工相比,其休假小时数最少的员工。 PARTITION BY 子句按职务对员工分区,而 FIRST_VALUE 函数独立应用于每个分区。 在 OVER 子句中指定的 ORDER BY 子句确定对每个分区中的行应用 FIRST_VALUE 函数的逻辑顺序。 ROWS UNBOUNDED PRECEDING 子句将窗口的起点指定为每个分区的第一行。
USE AdventureWorks2012;
GO
SELECT JobTitle, LastName, VacationHours,
FIRST_VALUE(LastName) OVER (PARTITION BY JobTitle
ORDER BY VacationHours ASC
ROWS UNBOUNDED PRECEDING
) AS FewestVacationHours
FROM HumanResources.Employee AS e
INNER JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
ORDER BY JobTitle;
以下为部分结果集。
JobTitle LastName VacationHours FewestVacationHours
----------------------------------- ------------------------- ------------- -------------------
Accountant Moreland 58 Moreland
Accountant Seamans 59 Moreland
Accounts Manager Liu 57 Liu
Accounts Payable Specialist Tomic 63 Tomic
Accounts Payable Specialist Sheperdigian 64 Tomic
Accounts Receivable Specialist Poe 60 Poe
Accounts Receivable Specialist Spoon 61 Poe
Accounts Receivable Specialist Walton 62 Poe