As duas respostas que eu vejo funcionam bem no Informix especificamente e são basicamente SQL padrão. Ou seja, a notação:
INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;
funciona bem com o Informix e, eu esperaria, com todo o DBMS. (Uma vez, há 5 anos ou mais, esse é o tipo de coisa que o MySQL nem sempre suportava; agora possui um suporte decente para esse tipo de sintaxe SQL padrão e, AFAIK, funcionaria bem nessa notação.) A lista de colunas é opcional, mas indica as colunas de destino em sequência; portanto, a primeira coluna do resultado do SELECT entra na primeira coluna listada, etc. Na ausência da lista de colunas, a primeira coluna do resultado do SELECT entra no primeira coluna da tabela de destino.
O que pode ser diferente entre os sistemas é a notação usada para identificar tabelas em diferentes bancos de dados - o padrão não tem nada a dizer sobre operações entre bancos de dados (quanto mais entre DBMS). Com o Informix, você pode usar a seguinte notação para identificar uma tabela:
[dbase[@server]:][owner.]table
Ou seja, você pode especificar um banco de dados, identificando opcionalmente o servidor que hospeda esse banco de dados, se ele não estiver no servidor atual, seguido por um proprietário opcional, ponto e, finalmente, o nome da tabela real. O padrão SQL usa o termo esquema para o que o Informix chama de proprietário. Portanto, no Informix, qualquer uma das seguintes notações pode identificar uma tabela:
table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table
O proprietário em geral não precisa ser citado; no entanto, se você usar aspas, precisará digitar o nome do proprietário corretamente - ele faz distinção entre maiúsculas e minúsculas. Isso é:
someone.table
"someone".table
SOMEONE.table
todos identificam a mesma tabela. Com o Informix, há uma complicação leve nos bancos de dados MODE ANSI, em que os nomes dos proprietários geralmente são convertidos em maiúsculas (o Informix é a exceção). Ou seja, em um banco de dados MODE ANSI (normalmente não usado), você pode escrever:
CREATE TABLE someone.table ( ... )
e o nome do proprietário no catálogo do sistema seria "ALGUÉM", em vez de "alguém". Se você colocar o nome do proprietário entre aspas duplas, ele funcionará como um identificador delimitado. Com o SQL padrão, identificadores delimitados podem ser usados em muitos lugares. Com o Informix, você pode usá-los apenas em torno de nomes de proprietários - em outros contextos, o Informix trata cadeias de citação única e dupla como cadeias de caracteres, em vez de separar cadeias de citação única como cadeias e cadeias de citação dupla como identificadores delimitados. (Obviamente, apenas para completar, existe uma variável de ambiente, DELIMIDENT, que pode ser configurada - com qualquer valor, mas Y é mais seguro - para indicar que aspas duplas sempre envolvem identificadores delimitados e aspas simples sempre envolvem seqüências de caracteres.)
Observe que o MS SQL Server consegue usar [identificadores delimitados] entre colchetes. Parece estranho para mim e certamente não faz parte do padrão SQL.