FIRST_VALUE (Transact-SQL)
S’applique à : point de terminaison Azure SQL Edge SQL Analytics Analytics Platform System (PDW) Azure SQL Database Azure SQL Database Azure Synapse Analytics Platform System (PDW) dans Microsoft Fabric Warehouse
Retourne la première valeur dans un jeu ordonné de valeurs.
Conventions de la syntaxe Transact-SQL
Syntaxe
FIRST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
Arguments
scalar_expression
Valeur à retourner. scalar_expression peut être une colonne, une sous-requête ou une autre expression arbitraire qui aboutit à une valeur unique. Les autres fonctions analytiques ne sont pas autorisées.
[ IGNORER NULLS | RESPECTER NULLS ]
S’applique à : SQL Server (à compter de SQL Server 2022 (16.x)), Azure SQL Database, Azure SQL Managed Instance, Azure SQL Edge
IGNORE NULLS
- Ignorez les valeurs Null dans le jeu de données lors du calcul de la première valeur sur une partition.
RESPECT NULLS
- Respectez les valeurs Null dans le jeu de données lors de l’informatique de la première valeur sur une partition. RESPECT NULLS
est le comportement par défaut si aucune option NULLS n’est spécifiée.
Pour plus d’informations sur cet argument dans Azure SQL Edge, consultez Entrée de valeurs manquantes.
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
La fonction partition_by_clause divise le jeu de résultats généré par la clause FROM en partitions auxquelles la fonction est appliquée. S'il n'est pas spécifié, la fonction gère toutes les lignes du jeu de résultats de la requête en un seul groupe.
order_by_clause détermine l’ordre logique dans lequel l’opération est effectuée. order_by_clause est requis.
La fonction rows_range_clause limite davantage les lignes dans la partition en spécifiant les points de départ et de terminaison.
Pour plus d’informations, consultez Clause OVER (Transact-SQL).
Types de retour
Type similaire à celui de scalar_expression.
Notes
FIRST_VALUE
n’est pas déterministe. Pour plus d’informations, consultez Fonctions déterministes et non déterministes.
Exemples
R. Utiliser FIRST_VALUE sur un jeu de résultats de la requête
L'exemple suivant utilise FIRST_VALUE
pour retourner le nom du produit le moins coûteux dans une catégorie de produits donnée.
USE AdventureWorks2022;
GO
SELECT Name,
ListPrice,
FIRST_VALUE(Name) OVER (
ORDER BY ListPrice ASC
) AS LeastExpensive
FROM Production.Product
WHERE ProductSubcategoryID = 37;
Voici le jeu de résultats.
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. Utiliser FIRST_VALUE sur les partitions
L'exemple suivant utilise FIRST_VALUE
pour retourner l'employé ayant le nombre d'heures de congé le moins élevé, comparé à d'autres employés avec le même poste. La clause PARTITION BY
répartit les employés par poste et la fonction FIRST_VALUE
est appliquée à chaque partition indépendamment. La clause ORDER BY
spécifiée dans la clause OVER
détermine l'ordre logique dans lequel la fonction FIRST_VALUE
est appliquée aux lignes de chaque partition. La clause ROWS UNBOUNDED PRECEDING
spécifie le point de départ de la fenêtre comme première ligne de chaque partition.
USE AdventureWorks2022;
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;
Voici le jeu de résultats.
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