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, il s'agit d'une requête d'entrep?t de données et je l'ai exécutée dans MS Access. Donc, en gros, 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);
Je l'ai essayé mais j'ai re?u un message d'erreur de syntaxe.
Si tu voulais faire ?a, que ferais-tu ?
Vous disposez de deux options de syntaxe?:
Option 1
CREATE TABLE Table1 ( id int identity(1, 1) not null, LongIntColumn1 int, CurrencyColumn money ) CREATE TABLE Table2 ( id int identity(1, 1) not null, LongIntColumn2 int, CurrencyColumn2 money ) INSERT INTO Table1 VALUES(12, 12.00) INSERT INTO Table1 VALUES(11, 13.00) INSERT INTO Table2 SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1
Option 2
CREATE TABLE Table1 ( id int identity(1, 1) not null, LongIntColumn1 int, CurrencyColumn money ) INSERT INTO Table1 VALUES(12, 12.00) INSERT INTO Table1 VALUES(11, 13.00) SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 INTO Table2 FROM Table1 GROUP BY LongIntColumn1
N'oubliez pas que l'option 2 créera un tableau avec uniquement des colonnes sur la projection (colonnes sur le SELECT).
Pas de "VALEURS", pas de parenthèses?:
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1;