SQL Server 2012 “Denali” CTP3 – Funções Analíticas: FIRST_VALUE e LAST_VALUE

Surgiram ainda outras novas funções no SQL Server Denali CTP3, como a FIRST_VALUE() que simplifica cenários que necessitam recuperar o primeiro ou último valor de uma da coluna.

Após ler este artigo, dê uma olhada nas recomendações, onde relacionei artigos sobre funções analíticas de duas feras em SQL Server, Christophe LAPORTE (MCM) e Fabiano Neves Amorim (SolidQ).

Para os exemplos da função FIRST_VALUE(), vamos criar um cenário simples, com uma tabela com alguns registros com nomes e horários:

Antes da função FIRST_VALUE, era necessário alguma forma de sub consulta para ter em uma coluna o valor do primeiro registro:

Agora com o Denali, temos a função FIRST_VALUE para simplificar um pouco este cenário:

Assim como recuperar o último valor (penso que esta situação poderá ser substituída pela função LAST_VALUE nos próximos releases):

No caso de recuperar a primeira hora (HORA) de cada pessoa (NOME), antes do Denali tínhamos que usar uma clausula WHERE sobre a sub consulta:

Situação que pode ser facilmente simplificada com PARTITION BY:

Seria um problema da função LAST_VALUE()?

Em relação à função LAST_VALUE, ainda não descobri como ela funciona no SQL Server Denali, pois ao meu entendimento ela deveria trazer o último valor, no entanto, nos testes que realizei com ela não retornou nada além do valor corrente. Pelo que vi no artigo do Christophe LAPORTE, não sou o único que não se entendeu com esta função.

Recomendações:

Quem gostou das funções analíticas e quer conhecer um pouco mais sobre estas e outras funções que estão presentes no SQL Server Denali CTP 3, recomendo dar uma olhada nos seguintes artigos

Christophe LAPORTE: Denali CTP3 – Clause OVER étendue (artigo em francês)
http://conseilit.wordpress.com/2011/07/15/denali-ctp3-clause-over-tendue

Fabiano Neves Amorim: SQL Server – Windows Functions (artigos em português)
http://blogs.solidq.com/fabianosqlserver/Post.aspx?ID=58
http://blogs.solidq.com/fabianosqlserver/Post.aspx?ID=64

Referências:

Books Online for SQL Server “Denali”: Analytic Functions
http://msdn.microsoft.com/en-us/library/hh213234(v=SQL.110).aspx

Anúncios

2 pensamentos sobre “SQL Server 2012 “Denali” CTP3 – Funções Analíticas: FIRST_VALUE e LAST_VALUE

  1. Pingback: SQL Server Denali CTP 3 – Resumo « SQL From Hell.com

  2. No dúvida do LAST_VALUE, também fiquei intrigado com a resposta.
    Mas também descobri que se colocar o restante da sitnaxe “ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING” o comando funciona bem.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s