各位用户为了找寻关于SqlServer2012中LEAD函数简单分析的资料费劲了很多周折。这里教程网为您整理了关于SqlServer2012中LEAD函数简单分析的相关资料,仅供查阅,以下为您介绍关于SqlServer2012中LEAD函数简单分析的详细内容
LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20DECLARE
@TestData
TABLE
(
ID
INT
IDENTITY(1,1),
Department
VARCHAR
(20),
LastName
VARCHAR
(20),
Rate
FLOAT
)
INSERT
INTO
@TestData(Department,LastName,Rate)
SELECT
'Document Control'
,
'Arifin'
,17.7885
UNION
ALL
SELECT
'Document Control'
,
'Norred'
,16.8269
UNION
ALL
SELECT
'Document Control'
,
'Kharatishvili'
,16.8269
UNION
ALL
SELECT
'Information Services'
,
'Chai'
,10.25
UNION
ALL
SELECT
'Information Services'
,
'Berge'
,10.25
UNION
ALL
SELECT
'Information Services'
,
'Trenary'
,50.4808
UNION
ALL
SELECT
'Information Services'
,
'Conroy'
,39.6635
UNION
ALL
SELECT
'Information Services'
,
'Ajenstat'
,38.4615
UNION
ALL
SELECT
'Information Services'
,
'Wilson'
,38.4615
UNION
ALL
SELECT
'Information Services'
,
'Connelly'
,32.4519
UNION
ALL
SELECT
'Information Services'
,
'Meyyappan'
,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