SqlServer2012中LEAD函数简单分析

sql SERVER 2012 T-sql新增几个聚合函数: FirsT_VALUE LAST_VALUE LEAD LAG,今天我们首先来简单分析下LEAD,希望对大家有所帮助,能够尽快熟悉这个聚合函数

LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE @TestData TABLE (
  ID INT IDENTITY(1,1),
Department VARCHAR (20),
LastName sql keyword" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,
Rate FLOAT
)
INSERT INTO @TestData(Department,LastName,Rate)
SELECT 'Document Control' , 'Arifin' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,17.7885 UNION ALL
'norred' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,16.8269 ALL
'Kharatishvili' ALL
'information Services' 'Chai' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,10.25 ALL
'Berge' ALL
'Trenary' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,50.4808 ALL
'Conroy' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,39.6635 ALL
'Ajenstat' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,38.4615 ALL
'Wilson' ALL
'Connelly' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,32.4519 ALL
'Meyyappan' sql plain" style="margin:3px auto 0px; padding:0px 0px 0px 5px; border-left-width:3px; border-left-style:solid; border-left-color:rgb(108,32.4519
 
SELECT * FROM @TestData

以上是原始数据,下边应用LEAD函数,看下怎么把其它行的数据提取到当前行显示

可以看到,LEAD函数把ID为2的那一行的LastName值提取到第一行显示为新列NEXTUser,就这么个功能

下边这个是间隔两行提取数据,就是把第三行的数据提取到当前行,其它行以次累推,看图

这个函数一共接受三个参数,第一个是表达式,以上示例都使用的字段,还可以是其它有效的表达式,第二个参数是offset,即间隔多少行取数据,第三个是认的间隔,即当没有指定offset时以此为准

举个例子,以上述代码为例

LEAD(LastName,2,0)

当没有指定那个2的时候,则以间隔0行为准,当有指定那个2的时候则间隔2行取数据,所以,往往第三个参数可以不指定,效果是一样的,如下图

与LEAD函数相对应的还有一个函数,LAG,看下图效果

如上图所示,这个函数是从上行取数据,其它间隔参数的意义一样,LEAD是从下行取数据,TAG相反是上行取数据,写到这里我就再想,如果指定负数,是不是就可以合并为一个函数了?试下想法:

报错,offset参数不能为负,哥不作评论,,,The End


上文来自:http://www.jb51.net/article/54336.htm

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...