Combine OUTPUT insert.id com o valor da linha selecionada

CorridaSQL Server 2014. Como posso inserir várias linhas de uma tabela e combinar os dados inseridos com os novos IDs?

Vejamos um exemplo simplificado!

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

Preciso combinar os IDs inseridos com os dados que estão sendo inseridos. Posso assumir que as linhas inseridas estão na mesma ordem que as linhas selecionadas? (Não poderei participar de[Data] após a operação de inserção.)

Atualizar

O seguinte parece ser uma solução possível, mas não consigo encontrar provas de que funcione. É garantido que funcione?

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]

O truque aqui é usar um separadoidentity coluna eORDER BY para as linhas selecionadas e, em seguida,juntando-se RowID.

questionAnswers(2)

yourAnswerToTheQuestion