Hola Esteban,
El volumen de datos es minimo (~ 10) porque es un proceso que se hace por
partes, pero igual lo que no queria era comparar por C1, porque en realidad
puede que haya duplicados y no sea exactamente la respuesta que espero...

Igual voy a hacer eso (a menos que algun mago tenga otra solucion :o)

Gracias!,
Diego

2008/11/4 Esteban Grinberg <[EMAIL PROTECTED]>

> No se si existe mejor forma, pero esta funciona. Depende de tu volumen de
> datos evaluar si es optima o no.
>
> begin tran
>
> create table notmp (id int primary key identity(1,1),
> c1 nvarchar(5))
> create table #tmp (c1 nvarchar(5),
> fk int)
>
> insert into #tmp (c1) values ('A')
> insert into #tmp (c1) values ('B')
> insert into #tmp (c1) values ('C')
>
> *INSERT INTO notmp (c1)
> select c1
> from #tmp
>
> UPDATE #tmp SET FK = ID FROM notmp WHERE notmp.C1 = #tmp.C1*
>
> select * from notmp
> select * from #tmp
>
>
> drop table #tmp
> drop table notmp
>
> rollback tran
>
>
> 2008/11/4 Diego Jancic <[EMAIL PROTECTED]>
>
>> Hola gente!,
>> Tengo un problema que no se me ocurre como resolver sin usar columnas
>> auxiliares (en las tablas no temporales)
>>
>> Mi idea es, si tengo una tabla con este contenido:
>>
>> Tabla: #tmp
>> c1    fk
>> ----- -----------
>> A     NULL
>> B     NULL
>> C     NULL
>>
>> Insertar todo ese contenido en otra tabla no temporal, y actualizar la
>> tabla temporal con los ids insertados. De forma que quede:
>>
>> Tabla: notmp
>> id       c1
>> -------- -----
>> 1        A
>> 2        B
>> 3        C
>>
>> Tabla: #tmp
>> c1    fk
>> ----- -----------
>> A     1
>> B     2
>> C     3
>>
>> Se entiende??
>>
>> Yo llegue a hacer algo como esto:
>>
>> --------------------------------------------------------
>> begin tran
>>
>> create table notmp (id int primary key identity(1,1),
>> c1 nvarchar(5))
>> create table #tmp (c1 nvarchar(5),
>> fk int)
>>
>> insert into #tmp (c1) values ('A')
>> insert into #tmp (c1) values ('B')
>> insert into #tmp (c1) values ('C')
>>
>> INSERT INTO notmp (c1)
>> OUTPUT INSERTED.ID INTO #tmp (fk)
>> select c1
>> from #tmp
>>
>> select * from notmp
>> select * from #tmp
>>
>>
>> drop table #tmp
>> drop table notmp
>>
>> rollback tran
>> --------------------------------------------------------
>>
>> Pero eso hace que que me #tmp me quede asi:
>>
>> c1    fk
>> ----- -----------
>> A     NULL
>> B     NULL
>> C     NULL
>> NULL  1
>> NULL  2
>> NULL  3
>>
>> Alguna Idea?
>>
>> Gracias!,
>> Diego
>>
>
>

Responder a