Всего продаж, MTD продаж за дату - PullRequest
1 голос
/ 13 мая 2019

Необходимо показать общий объем продаж для каждой даты в период с 13 июня 2019 года по 27 июня 2019 года вместе с продажами MTD для каждой даты (1 июня 2019 года - текущая дата).

Это мой запрос:

select date, sum(sales) as 'Daily Sales', 
sum(sales) over (partition by datepart(month, date) order by date ROWS between unbounded preceding and current row) as 'MTD Sales' 
from Orders 
where date between '13/06/2019' and '27/06/2019'
group by date;

При добавлении предложения where он меняет продажи MTD, чтобы показывать итоговую сумму, начиная только с 13-го числа, когда я хочу запустить MTDВсего, чтобы начать с 1-го.

Это желаемый выход:

Date    | Daily Sales | MTD Sales
---------------------------------
13 June | 200         | 700
15 June | 300         | 1000
20 June | 500         | 1500

1 Ответ

2 голосов
/ 13 мая 2019

Поскольку оконная функция, вычисленная после , оценивается предложение where, вы должны выполнить это как два запроса.Вот пример:

;with [MTD sales] as (
    select date, sum(sales) as 'Daily Sales', 
    sum(sales) over (partition by datepart(month, date) order by date ROWS between unbounded preceding and current row) as 'MTD Sales' 
    from Orders 
    group by date;
)
select *
from [MTD sales]
where date between '13/06/2019' and '27/06/2019'

Это использует CTE для запуска вычисления правильной суммы на дату, а затем применяет фильтрацию в качестве второго шага после выполнения правильных вычислений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...