2013-05-07 1 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