J'essaie d'écrire une requête qui extrait et transforme les données d'une table, puis insère ces données dans une autre table. Oui, c'est une requête d'entreposage de données et je le fais dans MS Access. Donc, fondamentalement, je veux une requête comme celle-ci:
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
(SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);
J'ai essayé mais j'obtiens un message d'erreur de syntaxe.
Que feriez-vous si vous vouliez faire cela?
Vous avez deux options de syntaxe:
Option 1
Option 2
Gardez à l'esprit que l'option 2 créera une table avec uniquement les colonnes de la projection (celles du SELECT).
la source
Supprimez les valeurs et les parenthèses.
la source
Supprimer
VALUES
de votre SQL.la source
Je crois que votre problème dans ce cas est le mot-clé "valeurs". Vous utilisez le mot clé "values" lorsque vous insérez une seule ligne de données. Pour insérer les résultats d'une sélection, vous n'en avez pas besoin.
De plus, vous n'avez vraiment pas besoin des parenthèses autour de l'instruction select.
De msdn :
Requête d'ajout à plusieurs enregistrements:
Requête d'ajout d'un seul enregistrement:
la source
Supprimez les "valeurs" lorsque vous ajoutez un groupe de lignes et supprimez les parenthèses supplémentaires. Vous pouvez éviter la référence circulaire en utilisant un alias pour avg (CurrencyColumn) (comme vous l'avez fait dans votre exemple) ou en n'utilisant pas du tout d'alias.
Si les noms de colonne sont les mêmes dans les deux tables, votre requête ressemblerait à ceci:
Et cela fonctionnerait sans alias:
la source
Eh bien, je pense que le meilleur moyen serait (sera?) De définir 2 jeux d'enregistrements et de les utiliser comme intermédiaire entre les 2 tables.
Cette méthode est particulièrement intéressante si vous prévoyez de mettre à jour des tables à partir de différentes bases de données (c'est-à-dire que chaque jeu d'enregistrements peut avoir sa propre connexion ...)
la source
insertion de données d'une table dans une autre table dans une BASE DE DONNÉES différente
la source
Voulez-vous insérer une extraction dans une table existante?
Si cela n'a pas d'importance, vous pouvez essayer la requête ci-dessous:
Il créera une nouvelle table -> T1 avec les informations extraites
la source