Объединить OUTPUT вставленный.ид со значением из выбранной строки

БегSQL Server 2014, Как я могу вставить несколько строк из таблицы и объединить вставленные данные с новыми идентификаторами?

Давайте посмотрим на урезанный пример!

DECLARE @Old TABLE 
(
    [ID] [int] PRIMARY KEY,
    [Data] [int] NOT NULL
)

DECLARE @New TABLE
(
    [ID] [int] PRIMARY KEY,
    [OtherID] [int] NULL
)

INSERT INTO [dbo].[Test] ([Data])
OUTPUT inserted.[ID], [@Old].[ID] /* <--- not supported :( */ INTO @New
SELECT [Data]
FROM @Old

Мне нужно объединить вставленные идентификаторы с данными, которые вставляются. Можно ли предположить, что вставленные строки находятся в том же порядке, что и выбранные строки? (Я не смогу присоединиться к[Data] после операции вставки.)

Обновить

Следующее представляется возможным решением, но я не могу найти доказательств того, что оно работает. Это гарантированно работает?

DECLARE @Old TABLE 
(
    [RowID] [int] PRIMARY KEY IDENTITY, -- Guaranteed insert order?     
    [ID] [int] NOT NULL,
    [Data] [int] NOT NULL
)

DECLARE @New TABLE
(
    [RowID] [int] PRIMARY KEY IDENTITY, -- Guaranteed insert order? 
    [ID] [int] NOT NULL,
    [OtherID] [int] NULL
)

INSERT INTO [dbo].[Test] ([Data])
OUTPUT inserted.[ID] INTO @New
SELECT [Data]
FROM @Old
ORDER BY [RowID]

Хитрость заключается в том, чтобы использовать отдельныйidentity столбец иORDER BY для выбранных строк, а затемприсоединиться к RowID.

Ответы на вопрос(2)

Ваш ответ на вопрос