Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кумулативна сума на SQL Server по групи

В SQL Server 2005 бих направил това с помощта на корелирана подзаявка:

select dummy_id, date_registered, item_id, quantity, price,
       (select sum(quantity)
        from t t2
        where t2.item_id = t.item_id and
              t2.date_registered <= t.date_registered
       ) as cumulative
from table t;

Ако всъщност искате да добавите това в таблица, трябва да промените таблицата, за да добавите колоната и след това да направите актуализация. Ако таблицата има вмъквания и актуализации, ще трябва да добавите тригер, за да я поддържате актуална. Получаването чрез заявка определено е по-лесно.

В SQL Server 2012 можете да направите това, като използвате синтаксиса:

select dummy_id, date_registered, item_id, quantity, price,
       sum(quantity) over (partition by item_id order by date_registered) as cumulative
from table t;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как OBJECTPROPERTY() работи в SQL Server

  2. Не използвайте sp_depends в SQL Server (оттеглен е)

  3. Пуснете външния ключ, без да знаете името на ограничението?

  4. Как да върнете *всичко* от съхранена процедура с помощта на JDBC

  5. Възможно ли е да се използва пълнотекстово търсене (FTS) с LINQ?