我在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
关键字'表'附近的语法不正确。
请告知我在这里错过了什么。感谢
答案 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)