Текущий итог SQL Server 2008

Я знаю, что об этом спрашивали, но я совершенно сбит с толку.

Попытка запустить промежуточный итог по дням с использованием SQL Server 2008. Просматривал решения в других местах, но все равно был бы в полном недоумении.

В приведенном ниже коде показаны ежедневные продажи, но я не могу подсчитать промежуточную сумму. Посмотрел похожие решения здесь, но не повезло. Просмотрел разделы, порядок, CTE и т. д., но я еще не разобрался с SQL.

Буду признателен за помощь, мой код ниже. Я знаю, что это возвращает только общее количество, сгруппированное по дням...

SELECT
    dim_invoice_date.invoice_date AS 'Invoice Date',
    round(SUM(invoice_amount_corp),2) AS 'Sales'
FROM 
    fact_om_bud_invoice 
JOIN
    dim_invoice_date ON fact_om_bud_invoice.dim_invoice_date_key = dim_invoice_date.dim_invoice_date_key 
WHERE   
    dim_invoice_date.current_cal_month IN ('Current') 
    AND fact_om_bud_invoice.budget_code IN ('BUDGET') 
GROUP BY 
    dim_invoice_date.invoice_date
HAVING 
    ROUND(SUM(invoice_amount_corp), 2) <> 0
ORDER BY
    'Invoice Date'

Это возвращает вывод:

Invoice Date     Sales 
-----------------------
4/10/2016       24,132 
5/10/2016       15,849 
6/10/2016       24,481 
7/10/2016       10,243 
10/10/2016      42,398 
11/10/2016      24,187 

Требуемый формат примерно такой:

Invoice Date     Sales   Running Sales
-------------------------------------------
04/10/2016      24,132   24,132
05/10/2016      15,849   39,981 
06/10/2016      24,481   64,462
07/10/2016      10,243   74,705
10/10/2016      42,398   117,103
11/10/2016      24,187   141,290

dim_invoice_date — числовое поле, оно ищет отдельную таблицу дат для отображения в виде даты и времени.


person Boothy_79    schedule 04.11.2016    source источник
comment
Дайте несколько образцов записей и ожидаемый результат   -  person Mansoor    schedule 04.11.2016
comment
Ищете что-то вроде:   -  person Boothy_79    schedule 04.11.2016
comment
Я не могу понять, что вы на самом деле хотите: Invoice_amount_corp — это числовой тип данных или вам нужна сумма за каждый день, если нет счета-фактуры?   -  person Rohit Gupta    schedule 04.11.2016
comment
Если в этот день нет никакой ценности, условие наличия должно удалить его.   -  person Boothy_79    schedule 04.11.2016
comment
я не уверен, возможно ли иметь сводку в другой столбец, я считаю, что вы можете сделать сводку, используя ROLL UP, которая добавляет новую строку в качестве сводки.   -  person bogzy    schedule 04.11.2016
comment
Вероятно, вы ищете решения здесь, на SO? Оберните запрос, который у вас есть, в CTE или заполните во временной таблице, чтобы вы могли ссылаться на информацию по имени таблицы, а затем примените решение, которое вы предпочитаете, к CTE или временной таблице. Это продвинет вас дальше? Дайте нам знать...   -  person TT.    schedule 04.11.2016


Ответы (1)


Например, можно использовать WITH common_table_expression

WITH cte AS
     (
       SELECT 
         ROW_NUMBER() OVER(ORDER BY h.[Date]) RowN,
         h.[Date],
         SUM(s.Quantity) q
       FROM   
         Sales s
           JOIN Headers h
             ON s.ID_Headers = h.ID
       WHERE  
         h.[Date] > '2016.10.31'
       GROUP BY
         h.[Date]
     )

SELECT 
  c.[Date],
  c.q,
  SUM(c1.q)
FROM   
  cte c
    JOIN cte c1
      ON c1.RowN <= c.RowN
GROUP BY
  C.[Date],
  c.q
ORDER BY
  c.[Date]
person Sir Henry    schedule 04.11.2016