Insertar datos obtenidos con una consulta

Necesito que poder rellenar una tabla con los datos obtenidos de una consulta en tiempo de ejecución.
MS SQL SERVER
1** creo la tabla:
--------Inicio--------
Create Table TACCESOS2
(
CÓDIGO INT,
NOMBRE NVARCHAR(20),
FECHA NVARCHAR(20),
HORA NVARCHAR(20),
TERMINAL SMALLINT
);
---------Fin----------
2**Quiero insertar en la nueva tabla el resultado de la consulta:
SELECT PECODI AS CODIGO, PENOMB AS NOMBRE, SUBSTRING(CAST(FIFECH AS NVARCHAR),1,11) AS FECHA, CAST(FIHORA AS NVARCHAR) AS HORA, FINODO AS TERMINAL
FROM FFICHA,FPERSO
WHERE SUBSTRING(CAST(FFICHA.FICODI AS NVARCHAR),2,11) = FPERSO.PECODI
Respuesta
1
insert into TACCESOS2( codigo, nombre, fecha, hora, terminal)
SELECT PECODI AS CODIGO, PENOMB AS NOMBRE, SUBSTRING(CAST(FIFECH AS NVARCHAR),1,11) AS FECHA, CAST(FIHORA AS NVARCHAR) AS HORA, FINODO AS TERMINAL
FROM FFICHA,FPERSO
WHERE SUBSTRING(CAST(FFICHA.FICODI AS NVARCHAR),2,11) = FPERSO.PECODI
Antes que nada quisiera agradecerte la rapidez con que me has respondido.
Ya lo probé, pero me da el siguiente error:
--------
Msg 8152, Level 16, State 13, Line 1
String or binary data would be truncated.
The statement has been terminated.
--------
Gracias
Esto sucede cuando existen columnas en el resultado del SELECT que sobrepasan el limite del tamaño de alguna columna correspondiente en la tabla. Quizás podría ser la columna hora o terminal que es smallint. Para estar seguro, ejecuta el query solo y observa el resultado, todos los valores de cada columna arrojados en el resultado no pueden ser mayor al valor asignado a cada columna correspondiente en la tabla.
Muchas gracias por todo, ya está solucionado, no me había dado cuenta que era nombre+apellidos y la cadena resultante era mayor de 20 caracteres

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas