T-SQL de mise à JOUR à l'aide de l'auto rejoindre pour une variable de table

Imaginer qu'il y est un tableau:

declare @tab table (id int, val int)
insert into @tab(id, val)
values (1,10),(2,20),(1,15)

il est nécessaire de mettre à jour la table et de définir pour chaque id de la somme de toutes les valeurs avec la même id dans la table

update @tab
set val = (select sum(val) from @tab tab where tab.id = id)

La clause where de la dernière requête est toujours vrai et donc chaque ligne doit contenir la somme de toutes les valeurs dans le tableau.

Si la table était réel (pas de variable de table), je voudrais faire référence en utilisant le nom de la table:

update realtab
set val = (select sum(val) from @tab tab where tab.id = realtab.id)

Il est possible de faire une mise à jour pour les variables de table?

"Temporelle" signifie "dans le temps"; je pense que vous voulez dire "temporaire", mais en disant "variable de table" implique que, de toute façon. J'ai édité.
bien sûr, il est variable temporaire

OriginalL'auteur Timofey | 2011-04-19