2013-05-07 72 views
1
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。所以,预期的结果应该是:选择MAX并添加1(SQL Server 2012)

ID Name 
77 Ben     
78 Alex     
79 Mark 

请帮我解决这个逻辑而不使用游标。我可以以任何方式使用IDENTITY(@ ID,1)吗?由于

回答

3

替换:

Select * from #ABC 

为:

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

Working fiddle