FIRST_VALUE (Transact-SQL)
van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW) Azure SQL Edge SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric
Retourneert de eerste waarde in een geordende set waarden.
Transact-SQL syntaxisconventies
Syntaxis
FIRST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
Argumenten
scalar_expression
De waarde die moet worden geretourneerd. scalar_expression kan een kolom, subquery of andere willekeurige expressie zijn die resulteert in één waarde. Andere analytische functies zijn niet toegestaan.
[ NULL-WAARDEN NEGEREN | RESPECT NULLS ]
Van toepassing op: SQL Server 2022 (16.x) en latere versies, Azure SQL Database, Azure SQL Managed Instance en Azure SQL Edge
IGNORE NULLS
: null-waarden in de gegevensset negeren bij het berekenen van de eerste waarde boven een partitie.
RESPECT NULLS
: respecteer null-waarden in de gegevensset bij het berekenen van de eerste waarde boven een partitie.
RESPECT NULLS
is het standaardgedrag als er geen NULLS-optie is opgegeven.
Zie Ontbrekende waardeninvoeren voor meer informatie over dit argument in Azure SQL Edge.
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
De partition_by_clause verdeelt de resultatenset die door de FROM-component wordt geproduceerd in partities waarop de functie wordt toegepast. Als deze niet is opgegeven, behandelt de functie alle rijen van de queryresultatenset als één groep.
De order_by_clause bepaalt de logische volgorde waarin de bewerking wordt uitgevoerd. De order_by_clause is vereist.
De rows_range_clause beperkt de rijen binnen de partitie verder door begin- en eindpunten op te geven.
Zie OVER-component (Transact-SQL) voor meer informatie.
Retourtypen
Hetzelfde type als scalar_expression.
Opmerkingen
FIRST_VALUE
is niet-deterministisch. Zie Deterministische en niet-deterministische functiesvoor meer informatie.
Voorbeelden
Een. FIRST_VALUE gebruiken voor een queryresultatenset
In het volgende voorbeeld wordt FIRST_VALUE
gebruikt om de naam te retourneren van het product dat de goedkoopste is in een bepaalde productcategorie.
USE AdventureWorks2022;
GO
SELECT Name,
ListPrice,
FIRST_VALUE(Name) OVER (
ORDER BY ListPrice ASC
) AS LeastExpensive
FROM Production.Product
WHERE ProductSubcategoryID = 37;
Dit is de resultatenset.
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 over partities gebruiken
In het volgende voorbeeld wordt FIRST_VALUE
gebruikt om de werknemer te retourneren met het minste aantal vakantieuren in vergelijking met andere werknemers met dezelfde functie. De PARTITION BY
component partitioneert de werknemers op functie en de FIRST_VALUE
functie wordt onafhankelijk van elke partitie toegepast. De ORDER BY
component die is opgegeven in de OVER
component bepaalt de logische volgorde waarin de FIRST_VALUE
functie wordt toegepast op de rijen in elke partitie. De ROWS UNBOUNDED PRECEDING
component geeft het beginpunt van het venster is de eerste rij van elke partitie.
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;
Dit is de resultatenset.
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