FIRST_VALUE (Transact-SQL)

Retourne la première valeur dans un jeu de valeurs ordonné dans SQL Server 2012.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

FIRST_VALUE ( [scalar_expression ] ) 
    OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )

Arguments

  • scalar_expression
    Valeur à renvoyer. 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.

  • OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
    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. 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).

Type des valeurs retournées

Même type que scalar_expression.

Exemples

A.Utilisation de 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 AdventureWorks2012;
GO
SELECT Name, ListPrice, 
       FIRST_VALUE(Name) OVER (ORDER BY ListPrice ASC) AS LeastExpensive 
FROM Production.Product
WHERE ProductSubcategoryID = 37;

Voici l'ensemble des 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.Utilisation de 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és à d'autres employés avec la même fonction. La clause PARTITION BY décompose les employés par fonction 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 dans 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 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;

Voici un jeu de résultats partiel.

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

Voir aussi

Référence

Clause OVER (Transact-SQL)