Итоговая колонка по дате - PullRequest
       32

Итоговая колонка по дате

1 голос
/ 04 февраля 2012

В моей таблице есть следующие данные:

id   invoice_id   date         ammount
1    1            2012-01-01    100.00
20   1            2012-01-31     50.00
470  1            2012-01-15    300.00

Теперь мне нужно вычислить промежуточную сумму для счета за определенный период.Итак, выходные данные для этого образца данных должны выглядеть следующим образом:

id   invoice_id   date         ammount  running_total
1    1            2012-01-01    100.00         100.00
470  1            2012-01-15    300.00         400.00
20   1            2012-01-31     50.00         450.00

Я пробовал с этими примерами http://www.sqlusa.com/bestpractices/runningtotal/ и некоторыми другими, но проблема в том, что у меня могут быть записи, такие как id 20,дата 2012-01-31 и идентификатор 120, дата 2012-01-01, а затем я не смог использовать NO = ROW_NUMBER (по дате) ... при первом выборе, а затем идентификатор

1 Ответ

0 голосов
/ 04 февраля 2012
DECLARE @DateStart DATE='2012-01-01'; 

WITH cte 
     AS (SELECT id = Row_number() OVER(ORDER BY [date]), 
                DATE, 
                myid = id, 
                invoice_id, 
                orderdate = CONVERT(DATE, DATE), 
                ammount 
         FROM   [Table_2] 
         WHERE  DATE >= @DateStart) 
SELECT myid, 
       invoice_id, 
       DATE, 
       ammount, 
       runningtotal = (SELECT SUM(ammount) 
                       FROM   cte 
                       WHERE  id <= a.id) 
FROM   cte AS a 
ORDER  BY id 

enter image description here

...