Estoy tratando de escribir una consulta que extrae y transforma datos de una tabla y luego los inserto en otra tabla. Sí, esta es una consulta de almacenamiento de datos y la estoy haciendo en MS Access. Así que básicamente quiero una consulta como esta:
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
(SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);
Intenté pero recibí un mensaje de error de sintaxis.
¿Qué harías si quisieras hacer esto?
Tiene dos opciones de sintaxis:
Opción 1
opcion 2
Tenga en cuenta que la Opción 2 creará una tabla con solo las columnas en la proyección (aquellas en SELECCIONAR).
fuente
Elimine ambos VALORES y el paréntesis.
fuente
Eliminar
VALUES
de su SQL.fuente
Creo que su problema en este caso es la palabra clave "valores". Utiliza la palabra clave "valores" cuando inserta solo una fila de datos. Para insertar los resultados de una selección, no la necesita.
Además, realmente no necesita los paréntesis alrededor de la instrucción select.
De msdn :
Consulta de anexos de registros múltiples:
Consulta de anexo de registro único:
fuente
Elimine los "valores" cuando agregue un grupo de filas y elimine los paréntesis adicionales. Puede evitar la referencia circular utilizando un alias para avg (CurrencyColumn) (como lo hizo en su ejemplo) o no utilizando un alias en absoluto.
Si los nombres de columna son los mismos en ambas tablas, su consulta sería así:
Y funcionaría sin un alias:
fuente
Bueno, creo que la mejor manera sería (¿será?) Definir 2 conjuntos de registros y usarlos como intermediario entre las 2 tablas.
Este método es particularmente interesante si planea actualizar tablas de diferentes bases de datos (es decir, cada conjunto de registros puede tener su propia conexión ...)
fuente
Insertar datos de una tabla a otra en diferentes BASES DE DATOS
fuente
¿Desea insertar extracción en una tabla existente?
Si no importa, puede probar la siguiente consulta:
Creará una nueva tabla -> T1 con la información extraída
fuente