Maison  >  Questions et réponses  >  le corps du texte

Comment insérer des enregistrements extraits d'une autre table dans une table

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 ?

P粉449281068P粉449281068362 Il y a quelques jours667

répondre à tous(2)je répondrai

  • P粉949267121

    P粉9492671212023-10-11 14:11:14

    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).

    répondre
    0
  • P粉322106755

    P粉3221067552023-10-11 10:09:04

    Pas de "VALEURS", pas de parenthèses :

    INSERT INTO Table2(LongIntColumn2, CurrencyColumn2)
    SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1;

    répondre
    0
  • Annulerrépondre