Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
Azure SQL Edge
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Egy rendezett értékhalmaz utolsó értékét adja vissza.
Transact-SQL szintaxis konvenciói
Szintaxis
LAST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
Érvek
scalar_expression
A visszaadandó érték. scalar_expression lehet egy oszlop, alquery vagy más kifejezés, amely egyetlen értéket eredményez. Más elemzési függvények nem engedélyezettek.
[ NULL ÉRTÉKEK FIGYELMEN KÍVÜL HAGYÁSA | RESPECT NULLS ] **
A következővonatkozik: SQL Server 2022 (16.x) és újabb verziók, Azure SQL Database, Felügyelt Azure SQL-példány és Azure SQL Edge
IGNORE NULLS – Figyelmen kívül hagyja az adathalmaz null értékeit, amikor az utolsó értéket egy partíción számítja ki.
RESPECT NULLS – Tartsa tiszteletben az adathalmaz null értékeit, amikor az utolsó értéket egy partíción számítja ki.
RESPECT NULLS az alapértelmezett viselkedés, ha nincs megadva NULL ÉRTÉKŰ beállítás.
Az Azure SQL Edge argumentumával kapcsolatos további információkért lásd hiányzó értékekimputálása című témakört.
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
A partition_by_clause a FROM záradék által létrehozott eredményhalmazt partíciókra osztja, amelyekre a függvényt alkalmazza. Ha nincs megadva, a függvény a lekérdezés eredményhalmazának összes sorát egyetlen csoportként kezeli.
A order_by_clause határozza meg az adatok sorrendjét a függvény alkalmazása előtt. A order_by_clause szükséges.
A rows_range_clause a kezdő- és végpontok megadásával tovább korlátozza a partíció sorait.
További információ: OVER záradék (Transact-SQL).
Visszatérési típusok
Ugyanaz a típus, mint scalar_expression.
Megjegyzések
LAST_VALUE nemdeterminista. További információ: Determinisztikus és nem determinisztikus függvények.
Példák
Egy. LAST_VALUE használata partíciókon
Az alábbi példa az egyes részlegek utolsó alkalmazottjának munkabérét adja vissza az adott fizetéshez (Rate). A PARTITION BY záradék részlegek szerint particionálja az alkalmazottakat, és a LAST_VALUE függvényt egymástól függetlenül alkalmazza az egyes partíciókra. A ORDER BY záradékban megadott OVER záradék határozza meg a LAST_VALUE függvény alkalmazásának logikai sorrendjét az egyes partíciók soraiban.
USE AdventureWorks2022;
GO
SELECT Department,
LastName,
Rate,
HireDate,
LAST_VALUE(HireDate) OVER (
PARTITION BY Department ORDER BY Rate
) AS LastValue
FROM HumanResources.vEmployeeDepartmentHistory AS edh
INNER JOIN HumanResources.EmployeePayHistory AS eph
ON eph.BusinessEntityID = edh.BusinessEntityID
INNER JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services', N'Document Control');
Itt van az eredményhalmaz.
Department LastName Rate HireDate LastValue
--------------------------- ----------------------- ------------ ---------- ----------
Document Control Chai 10.25 2003-02-23 2003-03-13
Document Control Berge 10.25 2003-03-13 2003-03-13
Document Control Norred 16.8269 2003-04-07 2003-01-17
Document Control Kharatishvili 16.8269 2003-01-17 2003-01-17
Document Control Arifin 17.7885 2003-02-05 2003-02-05
Information Services Berg 27.4038 2003-03-20 2003-01-24
Information Services Meyyappan 27.4038 2003-03-07 2003-01-24
Information Services Bacon 27.4038 2003-02-12 2003-01-24
Information Services Bueno 27.4038 2003-01-24 2003-01-24
Information Services Sharma 32.4519 2003-01-05 2003-03-27
Information Services Connelly 32.4519 2003-03-27 2003-03-27
Information Services Ajenstat 38.4615 2003-02-18 2003-02-23
Information Services Wilson 38.4615 2003-02-23 2003-02-23
Information Services Conroy 39.6635 2003-03-08 2003-03-08
Information Services Trenary 50.4808 2003-01-12 2003-01-12
B. FIRST_VALUE és LAST_VALUE használata számított kifejezésben
Az alábbi példa a FIRST_VALUE és LAST_VALUE függvényeket használja a számított kifejezésekben, hogy az adott számú alkalmazott esetében az aktuális negyedév, illetve az év első és utolsó negyedéve értékesítési kvótájának értéke közötti különbséget mutassa. A FIRST_VALUE függvény az év első negyedévének értékesítési kvótáját adja vissza, és kivonja az aktuális negyedév értékesítési kvótájának értékéből. A DifferenceFromFirstQuarternevű származtatott oszlopot adja vissza. Az év első negyedévében a DifferenceFromFirstQuarter oszlop értéke 0. A LAST_VALUE függvény az év utolsó negyedévének értékesítési kvótáját adja vissza, és kivonja az aktuális negyedév értékesítési kvótájának értékéből. A DifferenceFromLastQuarternevű származtatott oszlopban tér vissza. Az év utolsó negyedévében a DifferenceFromLastQuarter oszlop értéke 0.
Ebben a példában a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING záradékra van szükség ahhoz, hogy a nem nulla értékek a DifferenceFromLastQuarter oszlopban legyenek visszaadva. Az alapértelmezett tartomány RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. Ebben a példában az alapértelmezett tartomány (vagy a tartományt nem tartalmazó, az alapértelmezett használatot eredményező) használata nullákat eredményezne a DifferenceFromLastQuarter oszlopban. További információ: OVER záradék (Transact-SQL).
USE AdventureWorks2022;
GO
SELECT BusinessEntityID,
DATEPART(QUARTER, QuotaDate) AS Quarter,
YEAR(QuotaDate) AS SalesYear,
SalesQuota AS QuotaThisQuarter,
SalesQuota - FIRST_VALUE(SalesQuota) OVER (
PARTITION BY BusinessEntityID,
YEAR(QuotaDate) ORDER BY DATEPART(QUARTER, QuotaDate)
) AS DifferenceFromFirstQuarter,
SalesQuota - LAST_VALUE(SalesQuota) OVER (
PARTITION BY BusinessEntityID,
YEAR(QuotaDate) ORDER BY DATEPART(QUARTER, QuotaDate) RANGE BETWEEN CURRENT ROW
AND UNBOUNDED FOLLOWING
) AS DifferenceFromLastQuarter
FROM Sales.SalesPersonQuotaHistory
WHERE YEAR(QuotaDate) > 2005
AND BusinessEntityID BETWEEN 274
AND 275
ORDER BY BusinessEntityID,
SalesYear,
Quarter;
Itt van az eredményhalmaz.
BusinessEntityID Quarter SalesYear QuotaThisQuarter DifferenceFromFirstQuarter DifferenceFromLastQuarter
---------------- ----------- ----------- --------------------- --------------------------- -----------------------
274 1 2006 91000.00 0.00 -63000.00
274 2 2006 140000.00 49000.00 -14000.00
274 3 2006 70000.00 -21000.00 -84000.00
274 4 2006 154000.00 63000.00 0.00
274 1 2007 107000.00 0.00 -9000.00
274 2 2007 58000.00 -49000.00 -58000.00
274 3 2007 263000.00 156000.00 147000.00
274 4 2007 116000.00 9000.00 0.00
274 1 2008 84000.00 0.00 -103000.00
274 2 2008 187000.00 103000.00 0.00
275 1 2006 502000.00 0.00 -822000.00
275 2 2006 550000.00 48000.00 -774000.00
275 3 2006 1429000.00 927000.00 105000.00
275 4 2006 1324000.00 822000.00 0.00
275 1 2007 729000.00 0.00 -489000.00
275 2 2007 1194000.00 465000.00 -24000.00
275 3 2007 1575000.00 846000.00 357000.00
275 4 2007 1218000.00 489000.00 0.00
275 1 2008 849000.00 0.00 -20000.00
275 2 2008 869000.00 20000.00 0.00