Crear una tabla con una consulta

17/06/2005 - 02:02 por Victor Soto | Informe spam
Hola.
Como puedo hacer para que a partir de los resultados de la consulta pueda
crear una tabla (digamos una tabla temporal en donde pueda analizar
información) o que procedimiento puedo usar para este caso.

Gracias.

Preguntas similare

Leer las respuestas

#1 Maxi
17/06/2005 - 02:33 | Informe spam
Hola, usa SELECT INTO


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Victor Soto" <Victor escribió en el mensaje
news:
Hola.
Como puedo hacer para que a partir de los resultados de la consulta pueda
crear una tabla (digamos una tabla temporal en donde pueda analizar
información) o que procedimiento puedo usar para este caso.

Gracias.
Respuesta Responder a este mensaje
#2 Don Roque
17/06/2005 - 15:17 | Informe spam
Es cierto, el SELECT INTO es lo que necesitas

Pero siempre que veo esto, me veo casi obligado a hacer esta salvedad.

Si vos haces

Select * into #tabla from unatabla

estas tirando una sola instruccion, con lo cual; o TODOS los registros
de "unatabla" se copian a "#tabla" o se genera un error y "#tabla" ni
siquiera es creada.

Entonces, para poder mantener esta consistencia, el SQL SERVER tiene
que bloquear las tablas de sistema de la TEMPDB para crear la tabla
temporal.

Hago toda esta aclaracion, porque si el SELECT INTO se toma su tiempo
en ejecutarse (digamos debido a que el SELECT trae muchos registros)
cualquier otro proceso que intente crear una tabla temporal va a ser
bloqueado.

En estos casos, lo que yo recomiendo hacer es

select * into #tabla from unatabla where 0=1
insert into #tabla select * from unatabla


Espero haber sido claro!
Respuesta Responder a este mensaje
#3 Maxi
18/06/2005 - 16:52 | Informe spam
Hola Roque, mmm no creo que se bloquee la base de datos Tempdb lo que se
bloqueara es la tabla temporal en cuestion, no lo probe, pero me pareceria
loco que eso suceda asi porque con ese criterio si en lugar de hacerlo en la
tempdb lo hacemos en una comun dentro de la misma base de datos se
bloqueriara todo y esto no sucede


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Don Roque" escribió en el mensaje
news:
Es cierto, el SELECT INTO es lo que necesitas

Pero siempre que veo esto, me veo casi obligado a hacer esta salvedad.

Si vos haces

Select * into #tabla from unatabla

estas tirando una sola instruccion, con lo cual; o TODOS los registros
de "unatabla" se copian a "#tabla" o se genera un error y "#tabla" ni
siquiera es creada.

Entonces, para poder mantener esta consistencia, el SQL SERVER tiene
que bloquear las tablas de sistema de la TEMPDB para crear la tabla
temporal.

Hago toda esta aclaracion, porque si el SELECT INTO se toma su tiempo
en ejecutarse (digamos debido a que el SELECT trae muchos registros)
cualquier otro proceso que intente crear una tabla temporal va a ser
bloqueado.

En estos casos, lo que yo recomiendo hacer es

select * into #tabla from unatabla where 0=1
insert into #tabla select * from unatabla


Espero haber sido claro!

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida