агрегировать некоторые значения записей - PullRequest
0 голосов
/ 27 августа 2018

У меня возникла небольшая проблема с таблицей SQL:

enter image description here

Я подумал, можно ли в SQL-сервере заполнить столбец trasco_totсумма значений [importo a deb], где id_testata одинакова;пример вывода

Importo a deb     id_testata      tot
     31               1           148
     117              1           148
     14               2            14
     …               …            …
     154              12          160
     6                12          160

Я могу управлять данными и с доступом, и с набором записей, и с некоторыми, если мне удастся получить хитрость, но мне было интересно, есть ли решение и в SQL-сервере, потому чтовыполнение запроса будет намного быстрее, чем набор записей

1 Ответ

0 голосов
/ 27 августа 2018

Это легко сделать с помощью оконной функции sum. Попробуйте это:

select [Importo a Deb], [trasco_id_testdata],
       sum([Importo a Deb]) over (partition by [trasco_id_testdata]) as [trasco_tot]
from my_table

Вы также можете использовать его в update выражении:

update t1 set t1.[trasco_tot] = t2.[trasco_tot] from my_table t1
join (select [trasco_id_testdata], sum([Importo a Deb]) over (partition by [trasco_id_testdata]) [trasco_tot] from my_table) t2
on t1.[trasco_id_testdata] = t2.[trasco_id_testdata]

Или проще:

update t1 set t1.[trasco_tot] = t2.[trasco_tot] from my_table t1
join (select [trasco_id_testdata], sum([Importo a Deb]) [trasco_tot] from my_table group by [trasco_id_testdata]) t2
on t1.[trasco_id_testdata] = t2.[trasco_id_testdata]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...