轉SQL Server 2012 的 TSQL 新功能 – 新的數據分析函數(LEAD、LAG)

当您需要在 SQL Server 中利用 T-SQL 比较结果集的每一列跟前一列或后一列的差异时,在过去可能需要利用 CURSOR 搭配临时表变量,或是透过递归 CTE 来达到这个效果,如今 SQL Server 2012 提供了两个分析用的函数(LEAD、LAG)来让您更容易进行 ROW LEVEL 数据比较。

  • 以下程序代码用来示范如何透过 LEAD 函数来计算每一列与后一列的 c2 字段相差几天:
   1:  declare @t table
   2:  (
   3:      c1 int identity
   4:      ,c2 date
   5:  )
   6:  
   7:  insert into @t (c2)
   8:  select '20120101' 
   9:  union all
  10:  select '20120201' 
  11:  union all
  12:  select '20120110' 
  13:  union all
  14:  select '20120221' 
  15:  union all
  16:  select '20120121' 
  17:  union all
  18:  select '20120203' 
  19:  
  20:  select c1,c2
  21:      ,LEAD(c2) OVER (ORDER BY c2) as next_c2
  22:      ,DateDiff(day,c2,LEAD(c2) OVER (ORDER BY c2)) as diff
  23:  from @t
  24:  order by c2

 

执行结果:

 轉SQL Server 2012 的 TSQL 新功能 – 新的數據分析函數(LEAD、LAG)

 

  • 以下程序代码用来示范如何透过 LAG  函数来计算每一列与前一列的 c2 字段相差几天:
   1:  declare @t table
   2:  (
   3:      c1 int identity
   4:      ,c2 date
   5:  )
   6:  
   7:  insert into @t (c2)
   8:  select '20120101' 
   9:  union all
  10:  select '20120201' 
  11:  union all
  12:  select '20120110' 
  13:  union all
  14:  select '20120221' 
  15:  union all
  16:  select '20120121' 
  17:  union all
  18:  select '20120203' 
  19:  
  20:  select c1,c2
  21:      ,LAG(c2) OVER (ORDER BY c2) as previous_c2
  22:      ,DateDiff(day,LAG(c2) OVER (ORDER BY c2),c2) as diff
  23:  from @t
  24:  order by c2

 

执行结果:

轉SQL Server 2012 的 TSQL 新功能 – 新的數據分析函數(LEAD、LAG)

 

 

 

 

更多相关文章
一周排行
  • 


    		    DevExpress v15.1:DevExtreme控件升級(三)
    1. HTML5/JS数据可视化 1.1 增强工具提示 支持HTML:现在您可以使用HTM
  • 


    		    使用腳本文件(jnlp)來發布Java程序
    发布Java程序(桌面程序)最直接的方法就是将jar文件打包交给用户.不过有时jar文件很
  • Font样式只有在创建的时候才能设定,将样式存储到数据库中后,想要还原Label的Font,则需要考虑拆装等 情况. model 为实体类的一个实例,里面包含了 fontFamily 字符串 fontSize dec
  • 今天对tornado有了初步了解,早知道有这样的东西就不用一直用VC++开发界面了. tornado用来开发网页,我将用它作为毕业设计的前台开发工具. 安装: 通过以下几步就可以轻松完成.或者自己下载一个,像下面一样
  • 一,提高并发数. apache安装好以后默认的并发数是256.这是远远不够的.所以需要设置提高并发数 1.首先修改http.conf 添加 Include conf/extra/httpd-mpm.conf 属性 2
  • 動手實現自己的 STL 容器《2》 list
    1. 序:    本文参考了侯捷的 <STL 源码分析>一书,出于兴趣,自行实 ...
  • 1. sqoop 1.99的安装配置 2. client使用 3. 从HBase,Hive导数据到mysql 版本 sqo99op-1.99.2-bin-hadoop100 Sqoop是Hadoop系统数据和RDBM ...
  • Merge Two Sorted Lists: Merge two sorted linked lists and return it as a new list. The new list should be ma ...
  • +- high water mark of newly created table V +--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  • 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. W ...