Published on

January 4, 2023

Как создать накопительный отчет о продажах в SQL Server

В отделах продаж и маркетинга часто устанавливаются цели для отдельных сотрудников или групп на каждый год. В то время как у компаний есть стандартные показатели и панели мониторинга для отслеживания общей производительности, сотрудникам необходим способ просмотра подробных цифр за текущий месяц, квартал или год, чтобы увидеть, как они приближаются к своим целям. В этой статье мы рассмотрим, как создать отчет, который показывает накопительные суммы продаж за текущий месяц, квартал и год в одном сводном отчете с использованием SQL Server Reporting Services (SSRS).

Решение

Для решения этой проблемы мы будем использовать функцию “RunningValue” в SSRS. Эта функция позволяет нам вычислять накопительные агрегаты на основе указанной области. В нашем случае мы будем использовать ее для вычисления накопительных сумм продаж за текущий месяц, квартал и год.

Во-первых, предположим, что целевая сумма продаж для отдельного сотрудника установлена на $120,000 за весь год. Это означает, что сотрудник должен достигать $10,000 каждый месяц в среднем, чтобы достичь цели. Мы будем использовать образец набора данных с месячными данными о продажах для демонстрации решения.

Вот пример запроса для создания образца данных:

SELECT
  YEAR([PeriodEndDate]) AS [Year],
  CASE
    WHEN MONTH([PeriodEndDate]) BETWEEN 1 AND 3 THEN 'Q1'
    WHEN MONTH([PeriodEndDate]) BETWEEN 4 AND 6 THEN 'Q2'
    WHEN MONTH([PeriodEndDate]) BETWEEN 7 AND 9 THEN 'Q3'
    WHEN MONTH([PeriodEndDate]) BETWEEN 10 AND 12 THEN 'Q4'
  END AS [Quarter],
  MONTH([PeriodEndDate]) AS [MonthNumber],
  DATENAME(MONTH,[PeriodEndDate]) AS [Month],
  [ActualSales],
  [TargetSales]
FROM 
  (VALUES
    ('2011-01-31', 11000, 120000/12),
    ('2011-02-28', 8000, 120000/12),
    ('2011-03-31', 12000, 120000/12),
    ('2011-04-30', 10000, 120000/12),
    ('2011-05-31', 12000, 120000/12),
    ('2011-06-30', 11000, 120000/12),
    ('2011-07-31', 9000, 120000/12),
    ('2011-08-31', 8000, 120000/12),
    ('2011-09-30', 12000, 120000/12),
    ('2011-10-31', 11000, 120000/12),
    ('2011-11-30', 9000, 120000/12),
    ('2011-12-31', 10000, 120000/12)
  ) AS SalesDetails([PeriodEndDate], [ActualSales], [TargetSales])

После получения образца данных мы можем приступить к созданию отчета:

  1. Создайте новый проект сервера отчетов в SQL Server Business Intelligence Development Studio (BIDS) и назовите его “SSRSDemo”.
  2. Добавьте новый отчет в проект и назовите его “SSRSCumulativeAggregates”.
  3. Создайте новый источник данных, указывающий на базу данных SQL Server.
  4. Создайте новый набор данных, используя запрос образца данных.
  5. Добавьте элемент управления таблицей на поверхность дизайна отчета.
  6. Обновите структуру таблицы и добавьте необходимые группы строк для года, квартала и месяца.
  7. Обновите метки ячеек и выражения для отображения фактических и целевых сумм продаж, а также накопительных агрегатов с использованием функции “RunningValue”.
  8. Примените форматирование к ячейкам таблицы для улучшения читаемости.
  9. Просмотрите отчет, чтобы увидеть накопительные суммы продаж для каждого месяца, квартала и года.

Используя функцию “RunningValue” в SSRS, мы легко можем показать накопительные агрегаты в нашем отчете. Это позволяет пользователям сравнивать фактические продажи с целевыми продажами в любой момент и принимать обоснованные решения на основе данных.

Резюме:

Создание накопительного отчета о продажах в SQL Server с использованием SSRS – это простой процесс. Используя функцию “RunningValue”, мы можем вычислять накопительные агрегаты для текущего месяца, квартала и года. Это предоставляет сотрудникам подробное представление о прогрессе в достижении их целей и помогает им планировать соответствующим образом.

Если вас интересует сравнение средних фактических продаж с средними целевыми продажами, вы можете изменить функцию “RunningValue”, чтобы использовать агрегацию “Avg” вместо “Sum”.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.