O SQL Server “Denali” introduziu as funções analíticas FIRST_VALUE() e LAST_VALUE(). E como os nomes já dizem, a função FIRST_VALUE() retorna o primeiro valor de um conjunto ordenado, e a LAST_VALUE() retorna o última valor do conjunto ordenado.
Por exemplo:
SELECT EmployeeID, FirstName, MiddleName, LastName,
FIRST_VALUE(EmployeeID) OVER (ORDER BY EmployeeID)
AS [Primeiro valor]
FROM Table_Employees
EmployeeID FirstName MiddleName LastName Primeiro valor 1 Ken J Sánchez 1 2 Ken J Sánchez 1 3 Ken J Sánchez 1 4 Terri Lee Duffy 1 5 Terri Lee Duffy 1 6 Terri Lee Duffy 1 7 Terri Lee Duffy 1
SELECT EmployeeID, FirstName, MiddleName, LastName,
FIRST_VALUE(EmployeeID) OVER
(PARTITION BY FirstName, MiddleName, LastName
ORDER BY FirstName, MiddleName, LastName)
AS [Primeiro Valor]
FROM Table_Employees
EmployeeID FirstName MiddleName LastName Primeiro Valor 1 Ken J Sánchez 1 2 Ken J Sánchez 1 3 Ken J Sánchez 1 4 Terri Lee Duffy 4 5 Terri Lee Duffy 4 6 Terri Lee Duffy 4 7 Terri Lee Duffy 4
SELECT EmployeeID, FirstName, MiddleName, LastName,
FIRST_VALUE(EmployeeID) OVER
(PARTITION BY FirstName, MiddleName, LastName
ORDER BY FirstName, MiddleName, LastName)
AS [Primeiro valor],
LAST_VALUE(EmployeeID) OVER
(PARTITION BY FirstName, MiddleName, LastName
ORDER BY FirstName, MiddleName, LastName)
AS [Último valor]
FROM Table_Employees
EmployeeID FirstName MiddleName LastName Primeiro valor Último valor 1 Ken J Sánchez 1 3 2 Ken J Sánchez 1 3 3 Ken J Sánchez 1 3 4 Terri Lee Duffy 4 7 5 Terri Lee Duffy 4 7 6 Terri Lee Duffy 4 7 7 Terri Lee Duffy 4 7
Autor/Fonte: SQL & Me
Comente e interaja!