Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL So aktualisieren Sie die SUMME der Spalte über der Gruppe in derselben Tabelle

Angenommen, Sie verwenden SQL Server, ich denke, Sie wollen so etwas:

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

Ihre ursprüngliche Abfrage weist mehrere Probleme und verdächtige Konstrukte auf. Erstens ist eine Aggregationsunterabfrage nicht aktualisierbar. Zweitens führen Sie eine Aggregation durch und verwenden eine Fensterfunktion, die zwar zulässig, aber ungewöhnlich ist. Drittens aggregieren Sie nach PersonSales und Nehmen der sum() . Wieder erlaubt, aber ungewöhnlich.