Я уверен, что есть миллион более изящных способов сделать это, но вот как я мог бы подойти к этому ...
Следующее основано на поставляемой Microsoft базе данных NorthWind, так что вы можете воссоздать ее, еслиВы действительно хотите ...
Здесь я установил фактические значения даты начала и окончания, но вы можете закомментировать первые несколько строк, а затем будут применены ваши параметры SSRS.
Итак, для начала мы взяли таблицу заказов, так как в ней были некоторые даты, и присоединились к некоторым основным данным заказов, чтобы я мог видеть, что результаты выглядят нормально, большинство столбцов не используются.
Мой набор данных выглядит такthis ...
SET DATEFORMAT YMD
DECLARE @startDate date = '1998/04/01'
DECLARE @endDate date = '1998/07/30'
SELECT
e.EmployeeID, e.FirstName, e.LastName, e.Title
, o.OrderID, o.OrderDate
, c.CustomerID, c.CompanyName
, CASE
WHEN (OrderDate between @startDate and @endDate ) THEN 'This Year'
WHEN (OrderDate between dateadd(YYYY,-1,@startDate) and dateadd(YYYY,-1,@endDate )) THEN 'Last Year'
WHEN (OrderDate between dateadd(YYYY,-2,@startDate) and dateadd(YYYY,-2,@endDate )) THEN '2 Years ago'
END as YearGroup
, MONTH(OrderDate) AS OrderMonth
, Day(OrderDate) AS OrderDay
FROM Employees e
join Orders o on e.EmployeeID = o.EmployeeID
join Customers c on o.CustomerID = c.CustomerID
WHERE
(OrderDate between @startDate and @endDate ) OR
(OrderDate between dateadd(YYYY,-1,@startDate) and dateadd(YYYY,-1,@endDate )) OR
(OrderDate between dateadd(YYYY,-2,@startDate) and dateadd(YYYY,-2,@endDate ))
Оператор Case в предложении SELECT
проверяет, попадают ли даты в одну из трех групп: либо
- между началом и концомпредоставленные даты
- между тем же диапазоном дат, но минус год
- между тем же диапазоном дат, но минус два года
Расчетные OrderMonth
и OrderDay
там, как я полагаю, вы будетеЯ захочу «сложить» линии, скажем, 1 июня, во всех трех группах в одной горизонтальной позиции на графике.** См. Примечания ниже для изменения этого.
Предложение WHERE
выполняет аналогичные тесты, чтобы убедиться, что мы возвращаем данные только из тех диапазонов, которые нам нужны.
Все, что я сделал, это просто добавиллинейный график и установите
- Группы рядов в поле
[YearGroup]
[OrderMonth]
и [OrderDay] в CategoryGroup - и (ни для каких другихпричина, по которой у меня больше ничего не отображалось) Я использовал сумму OrderID в качестве значений.
**, если вы хотите представить временной диапазон как одно непрерывное время, затем удалите OrderMonthи OrderDay из групп категорий и замените на OrderDate
Получившийся график выглядел ужасно, но это было только до данных.