使用SQL Server 2012中的超前/滞后功能获取语法错误

时间:2016-12-27 05:29:55

标签: sql-server tsql sql-server-2012

我在SQL Server 2012中使用了潜在客户/滞后功能,我在SQL Server Management Studio中测试时遇到了语法错误。我使用了前导和滞后函数来获取上一行和下一行的值。

我使用的SQL语法:

SELECT 
    Id, Name, Address, Age, Nationality,
    LEAD(Name, 1) OVER (ORDER BY Id ) LeadValue,
    LAG(Name, 1) OVER (ORDER BY Id ) LagValue
FROM 
    Table

错误讯息:

  

Msg 156,Level 15,State 1,Line 4
  关键字'表'附近的语法不正确。

请告知我在这里错过了什么。感谢

1 个答案:

答案 0 :(得分:2)

表格为keyword。请避免使用保留字关键字

如果您的表有名称表,请添加[Table]等括号。

保留字词和关键字列表:https://msdn.microsoft.com/en-us/library/ms189822(v=sql.110).aspx

评论中的第二项任务:

if object_id('tempdb..#Tmp') is not null drop table #Tmp
select *, row_number() over (order by Id) RN
into #Tmp
from [Table] 

select t.* 
from #Tmp t, (select Id, max(RN) mx, min(RN) mi from #Tmp group by Id) f
where t.Id = f.Id
    and (f.mx = t.RN or f.mi = t.RN)