Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Comment mettre à jour la somme de la colonne sur le groupe dans la même table

En supposant que vous utilisez SQL Server, je pense que vous voulez quelque chose comme ça :

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

Votre requête d'origine présente plusieurs problèmes et des constructions suspectes. Premièrement, une sous-requête d'agrégation ne peut pas être mise à jour. Deuxièmement, vous faites une agrégation et l'utilisation d'une fonction de fenêtre avec, bien que autorisée, est inhabituelle. Troisièmement, vous agrégez par PersonSales et en prenant le sum() . Encore une fois, autorisé, mais inhabituel.