なぜこれが機能しないのかわかりません。
動的 SQL を使用しています
SQLステートメントを生成する方法は次のとおりです。
OLD: SET @dSQL = 'DBCC CHECKIDENT([' + @TableName + '], RESEED, 0); SET IDENTITY_INSERT ' + @TableName + ' ON; INSERT INTO ' + @thisTable + '(' + @pkcolumns + ', '+ @columns + ')' + ' SELECT (' + @pkcolumns + ', '+ @columns + ') FROM ' + @oldTable +' GROUP BY ' + @pkcolumns + '; SET IDENTITY_INSERT ' + @TableName + ' OFF;'
NEW: SET @dSQL = 'DBCC CHECKIDENT([' + @TableName + '], RESEED, 0); SET IDENTITY_INSERT ' + @TableName + ' ON; INSERT INTO ' + @thisTable + @pkcolumns + ', '+ @columns + ' SELECT DISTINCT(' + @pkcolumns + '), '+ @columns + ' FROM ' + @oldTable + '; SET IDENTITY_INSERT ' + @TableName + ' OFF;'
プロシージャを実行すると、変数は次のようになります。
@TableName DATA.HTI
@thisTable DATA.HTI
@oldTable [OR_JTU_2530].DATA.HTI
@columns [PARENT_HTI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]
@pkcolumns [HTI_ID]
@dSQL DBCC CHECKIDENT([DATA.HTI], RESEED, 0); SET IDENTITY_INSERT DATA.HTI ON; INSERT INTO DATA.HTI([HTI_ID], [PARENT_HTI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]) SELECT ([KPI_ID], [PARENT_KPI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]) FROM [OR_JTU_2530].DATA.HTI GROUP BY [HTI_ID]; SET IDENTITY_INSERT DATA.HTI OFF;
更新: 削除され、個別に挿入されたグループ