Ambas respuestas que veo funcionan bien en Informix específicamente, y son básicamente SQL estándar. Es decir, la notación:
INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;
funciona bien con Informix y, esperaría, todos los DBMS. (Hace una vez, hace 5 años o más, este es el tipo de cosas que MySQL no siempre admitió; ahora tiene un soporte decente para este tipo de sintaxis SQL estándar y, AFAIK, funcionaría bien en esta notación). es opcional pero indica las columnas de destino en secuencia, por lo que la primera columna del resultado de SELECT entrará en la primera columna de la lista, etc. En ausencia de la lista de columnas, la primera columna del resultado de SELECT entrará en primera columna de la tabla de destino.
Lo que puede ser diferente entre sistemas es la notación utilizada para identificar tablas en diferentes bases de datos: el estándar no tiene nada que decir sobre las operaciones entre bases de datos (y mucho menos entre DBMS). Con Informix, puede usar la siguiente notación para identificar una tabla:
[dbase[@server]:][owner.]table
Es decir, puede especificar una base de datos, opcionalmente identificando el servidor que aloja esa base de datos si no está en el servidor actual, seguido de un propietario opcional, un punto y, finalmente, el nombre real de la tabla. El estándar SQL utiliza el término esquema para lo que Informix llama al propietario. Por lo tanto, en Informix, cualquiera de las siguientes notaciones podría identificar una tabla:
table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table
El propietario en general no necesita ser citado; sin embargo, si utiliza comillas, debe escribir correctamente el nombre del propietario; se distingue entre mayúsculas y minúsculas. Es decir:
someone.table
"someone".table
SOMEONE.table
Todos identifican la misma tabla. Con Informix, hay una complicación leve con las bases de datos MODE ANSI, donde los nombres de los propietarios generalmente se convierten en mayúsculas (informix es la excepción). Es decir, en una base de datos MODE ANSI (no utilizada comúnmente), podría escribir:
CREATE TABLE someone.table ( ... )
y el nombre del propietario en el catálogo del sistema sería "ALGUIEN", en lugar de "alguien". Si encierra el nombre del propietario entre comillas dobles, actúa como un identificador delimitado. Con SQL estándar, los identificadores delimitados se pueden usar en muchos lugares. Con Informix, puede usarlos solo alrededor de nombres de propietarios: en otros contextos, Informix trata las cadenas de comillas simples y dobles como cadenas, en lugar de separar las cadenas de comillas simples como cadenas y las cadenas de comillas dobles como identificadores delimitados. (Por supuesto, solo para completar, hay una variable de entorno, DELIMIDENT, que se puede establecer, en cualquier valor, pero Y es más seguro, para indicar que las comillas dobles siempre rodean identificadores delimitados y las comillas simples siempre rodean cadenas).
Tenga en cuenta que MS SQL Server logra usar [identificadores delimitados] encerrados entre corchetes. Me parece extraño, y ciertamente no es parte del estándar SQL.