SQL Server 2012的T-SQL新功能–新的资料分析函数(FIRST_VALUE、LAST_VALUE)

发布日期:2012-08-16 11:21:51

SQL Server 2012 提供各项的分析函数来帮助开发人员,可以用更有效率且容易维护的方式来撰写 T-SQL,在上一篇笔者介绍 SQL Server 2012 新增的八大分析函数之中的 LEAD 和 LAG,本文将介绍另外两个实用的分析函数 - FIRST_VALUE 和 LAST_VALUE。

FIRST_VALUE 函数语法如下:
FIRST_VALUE ( [scalar_expression )
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )

当您将结果集进行排序或资料分割后,要取得整个结果集或资料分割的第一笔资料可以使用 FIRST_VALUE 函数。

下列代码示范如何依照 c2 栏位进行资料分割,并利用 FIRST_VALUE 函数取得每个分割的第一笔资料。

 www.it165.net

declare @t table
  (
       c1 int identity
      ,c2 date
  )
 
  insert into @t (c2)
   select '20120101' 
union all
  select '20120201' 
  union all
  select '20120110' 
  union all
  select '20120221' 
  union all
  select '20120121' 
  union all
  select '20120203' 
  union all
  select '20120311' 
  union all
  select '20120321' 
  union all
  select '20120331' 
  25:   
  select c1,c2
         ,FIRST_VALUE(c2) OVER (PARTITION BY MONTH(c2) 
                                ORDER BY c2) AS 每个资料分割的第一笔资料
  from @t


执行结果如下:

 


 

LAST_VALUE 函数语法如下:
LAST_VALUE ( [scalar_expression )
OVER ( [ partition_by_clause ] order_by_clause rows_range_clause )

当您将结果集进行排序或资料分割后,要取得整个结果集或资料分割的最后一笔资料可以使用 LAST_VALUE 函数。

下列程式码示范如何依照 c2 栏位进行资料分割,并利用 LAST_VALUE 函数搭配 Window Frame 叙述取得每个分割的第后一笔资料。

 

declare @t table
  (
     c1 int identity
     ,c2 date
  )
  
  insert into @t (c2)
  select '20120101' 
  union all
  select '20120201' 
  union all
  select '20120110' 
  union all
  select '20120221' 
  union all
  select '20120121' 
  union all
  select '20120203' 
  union all
  select '20120311' 
  union all
  select '20120321' 
  union all
  select '20120331' 
  25:   
  select c1,c2
         ,LAST_VALUE(c2) OVER (PARTITION BY MONTH(c2) 
                               ORDER BY c2
                               ROWS BETWEEN UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING
                               ) AS 每个资料分割的第后笔资料
  from @t


执行结果如下:


 

Tag标签: T-SQL   分析函数   FIRST_VALUE   LAST_VALUE  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规