SQL Server “Denali” – Funções FIRST_VALUE() e LAST_VALUE()

Compartilhe este artigo!

Sobre o autor

Entre em contato...

Redação ForumWeb

Redação ForumWeb Equipe de desenvolvimento do ForumWeb.com.br, responsável pelas dicas e downloads do site.

Site do autor: http://www.forumweb.com.br

Indique este artigo

Para

Seu email

Mensagem

Fechar
Personalize sua mensagem

Código

Arquivos relacionados

  • Por enquanto, nenhum arquivo para download.

SQL Server “Denali” – Funções FIRST_VALUE() e LAST_VALUE()

Segunda-Feira, 22 de Agosto de 2011 às 11:15

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

Resultado:

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

Também podemos usar essas funções com o PARTITION BY, que permite particionar um conjunto de resultados em subconjuntos.

Por exemplo:

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

Resultado:

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

A função LAST_VALUE() tem a mesma sintaxe e cláusulas da FIRST_VALUE(), a única diferença é que ela retorna o último valor:

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

Resultado:

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

Qual a sua opinião?

Comente e interaja!



Ainda sem comentários, comente!