After SQL Server 2012 you can use LEAD like this.
;WITH BaseTable as ( SELECT 1 id, 1232 line_number UNION ALL SELECT 2 , 1456 UNION ALL SELECT 3, 1832 UNION ALL SELECT 4 , 2002 ) SELECT id,line_number,(LEAD(line_number,1,line_number) OVER(ORDER BY id ASC)) FROM BaseTable
For previous versions try this
;WITH BaseTable as ( SELECT 1 id, 1232 line_number UNION ALL SELECT 2 , 1456 UNION ALL SELECT 3, 1832 UNION ALL SELECT 4 , 2002 ), OrderedBaseTable as ( SELECT id,line_number,ROW_NUMBER() OVER(ORDER BY id asc) rw FROM BaseTable ) SELECT t1.id,t1.line_number,ISNULL(t2.line_number,t1.line_number) next_line_number FROM OrderedBaseTable t1 LEFT JOIN OrderedBaseTable t2 ON t1.rw = t2.rw - 1
ughai
source share