sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Sådan opdateres SUM for kolonne over gruppe i samme tabel

Hvis du antager, at du bruger SQL Server, tror jeg, du vil have noget som dette:

WITH toupdate AS
     (SELECT team, year, 
             Sum(personsales) OVER (partition BY team, year) AS newTeamSales 
      FROM salessummary
     ) 
UPDATE toupdate 
   SET teamsales = newteamsales; 

Din oprindelige forespørgsel har flere problemer og mistænkelige konstruktioner. For det første kan en aggregeringsunderforespørgsel ikke opdateres. For det andet laver du en aggregering, og at bruge en vinduesfunktion med, selvom det er tilladt, er usædvanligt. For det tredje samler du efter PersonSales og tager sum() . Endnu en gang tilladt, men usædvanligt.



  1. Sådan gemmer du array eller flere værdier i en kolonne

  2. Hvad er makroer, og hvordan bruger jeg dem?

  3. 3 måder at returnere antallet af rækker i hver partition i SQL Server (T-SQL)

  4. kodning UTF8 matcher ikke locale en_US; den valgte LC_CTYPE indstilling kræver kodning LATIN1