복붙노트

[SQL] SQL 서버 그룹에 의해 누적 합계

SQL

SQL 서버 그룹에 의해 누적 합계

나는이 형식의 테이블 (2005 SQL 서버)가 :

dummy_id, date_registered, ITEM_ID, 수량, 가격

난 같이 date_registered 각 ITEM_ID 순서의 누적 합계를 계산하는 새로운 열 (누적)을 추가 할 :

dummy_id  date_registered  item_id  quantity    price   cumulative

1           2013-07-01        100      10        34.5       10

2           2013-07-01        145       8        2.3         8

3           2013-07-11        100      20        34.5       30

4           2013-07-23        100      15        34.5       45

5           2013-07-24        145      10        34.5       18

미리 감사드립니다

해결법

  1. ==============================

    1.SQL Server 2005에서 나는 상관 하위 쿼리를 사용하여이 작업을 수행 할 것입니다 :

    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 서버 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;
    
  2. from https://stackoverflow.com/questions/17971988/sql-server-cumulative-sum-by-group by cc-by-sa and MIT license