SQL: copy los datos dentro de la misma tabla y aumenta la versión

Utilizo MS SQL en combinación con SSIS, donde necesito copyr y pegar filas de una tabla (la misma tabla para el origen y el destino) para un DocumentID determinado, y al mismo time boost la columna "subversión".

Ejemplo:

DocumentID=123 | Location=a | Version=2 |Subversion=4 DocumentID=123 | Location=b | Version=2 |Subversion=4 DocumentID=123 | Location=c | Version=2 |Subversion=4 

después de la copy:

 DocumentID=123 | Location=a | Version=2 |Subversion=5 DocumentID=123 | Location=b | Version=2 |Subversion=5 DocumentID=123 | Location=c | Version=2 |Subversion=5 

Dentro de SSIS, ya aumento el máximo (Subversion) (de 4 a 5 en el ejemplo). Lo que necesito es una instrucción select / insert para copyr los datos.

Como esta tabla tiene alnetworkingedor de 150 columnas, esperaba una forma sin enumerar todas las columnas, pero no pude encontrar ninguna información si eso es posible.

Intenté Insertar en combinación con Seleccionar pero siempre terminaba en errores (problemas agregados).

  Insert Into MyTable (AllMyColumns) select (AllmyColumns) from MyTable where DocumentID =123 AND ... 

¿Cómo necesito build esta statement?

gracias por tu ayuda.

Creo que seguir una solución te ayudará.

 --Move incremental rows to the #temp table Select * into #temp from MyTable where DocumentID=123 and ...... Declare @version varchar(20) Select @version = Max(SubVersion) from #temp --To increment the value set @version='Subversion='+Cast(Substring(@version,charindex('=',@version)+1,len(@version)) as int)+1 --To update the value into temp update #temp set SubVersion=@version --Now insert into your table insert into MyTable Select * from #temp --drop the temp table drop table #temp 

Espero que esto ayude

Como dijiste que necesitas insert into select testing esto y agrega las condiciones que desees.

 INSERT INTO table1(docid, location, version, subversion) SELECT (docid, location, version, subversion) FROM table1 ; 

Para dar una mejor respuesta, puede que necesite al less mostrar su consulta actual y qué mecanismo hace el incremento, el esquema de la tabla … Incluso podría suponer que ya está en este paso de todos modos …

Si sus columnas de origen y destino están en el order sames, simplemente haga lo siguiente:

 INSERT INTO MyTable SELECT * FROM MyTable WHERE DocumentID =123 AND ...