2012-09-07 21 views
60

Tengo una consulta SQL (SQL Server) y genera informes, quiero almacenar ese informe exacto en la tabla temporal para poder jugar más tarde. Ahora la pregunta es ¿necesito crear una tabla temporal primero y luego almacenar el resultado de la consulta SQL en ella, o hay alguna forma de crear dinámicamente la tabla y almacenar el resultado de la consulta?¿Cómo se inserta el resultado de la consulta SQL en la tabla temporal?

Respuesta

96

Mire SELECT INTO. Esto creará una nueva tabla para usted, que puede ser temporal si lo desea, prefijando el nombre de la tabla con un signo de almohadilla (#).

Por ejemplo, se puede hacer:

SELECT * 
INTO #YourTempTable 
FROM YourReportQuery 
+2

Tomado de otro hilo, '# yourtemptable' no necesita crearse primero. – JFA

+0

Esto no funcionará y arrojará el error como sintaxis incorrecta cerca de la palabra clave 'SELECT' si YourReportQuery es una consulta y no una tabla de base de datos. –

21

Puede utilizar select ... into ... para crear y rellenar una tabla temporal y luego consultar la tabla temporal para devolver el resultado.

select * 
into #TempTable 
from YourTable 

select * 
from #TempTable 
+0

Necesito crear #TempTable primero antes de ejecutar esa consulta/ – Satish

+10

No, no es así. Si desea llenar una tabla que ya existe con filas, necesita usar una sintaxis diferente. –

+0

¡¡Impresionante, funciona !! – Satish

2

Probar:

exec('drop table #tab') -- you can add condition 'if table exists' 
exec('select * into #tab from tab') 
3

En MySQL:

create table temp as select * from original_table 
+0

La modificación de la temperatura para #temp no funciona. Mensaje de error: Msg 156, nivel 15, estado 1, línea 3 Sintaxis incorrecta cerca de la palabra clave 'AS'. –

+0

Esta es una estructura que funciona en MySQL y posiblemente en otros. Op no especificó qué tipo de servidor se está utilizando, pero como lo llamó SQL Server, supongo que es Microsoft SQL Server. Por cierto, para otros que necesiten usar esto para MySQL, la respuesta de @ Hunter crearía una nueva tabla. Para crear una nueva tabla temporal, debe agregar la palabra clave TEMPORARY de esta manera: CREAR LA TABLA TEMPORAL temptbl AS SELECT ... FROM originaltbl – techdude

0

Suponga que su consulta de información existente es

Select EmployeeId,EmployeeName from Employee Where EmployeeId>101 order by EmployeeName 

y hay que guardar estos datos en la tabla temparory entonces su consulta va al

Select EmployeeId,EmployeeName into #MyTempTable from Employee Where EmployeeId>101 order by EmployeeName 
Cuestiones relacionadas