选择MAX并添加1(SQL Server 2012)

时间:2013-05-07 17:03:35

标签: sql sql-server sql-server-2012 ranking-functions

DROP TABLE #ID
CREATE TABLE #ID (ID INT)
INSERT INTO #ID (ID)
VALUES (24),(65),(77),(44)

DECLARE @ID int
SELECT @ID =  MAX(ID) from #ID

DROP TABLE #name
CREATE TABLE #NAME (Name char (20))
INSERT INTO #NAME (name)
VALUES ('Ben'),('Alex'),('Mark') 

DROP TABLE #abc
CREATE TABLE #ABC (ID INT, Name char(20))
INSERT INTO #ABC (ID,Name)
SELECT @ID,name
FROM #name

SELECT * FROM #ABC

我希望进程从#ID中获取最大ID,然后为下一条记录添加1。所以,预期的结果应该是:

ID  Name
77  Ben                 
78  Alex                
79  Mark   

请不要使用游标来帮助我绕过这个逻辑。我可以用任何方式使用IDENTITY(@ ID,1)吗?感谢

1 个答案:

答案 0 :(得分:3)

<强>替换

Select * from #ABC

:用于:

Select ROW_NUMBER() OVER (ORDER BY ID)  + ID - 1, Name from #ABC

Working fiddle