Published on

May 12, 2020

Экспорт данных SQL Server в Excel: объединение данных и создание панелей управления

В этой статье мы рассмотрим мощное сочетание экспорта данных SQL Server в Excel, где мы можем использовать возможности как SQL Server, так и MS Excel для создания информативных панелей управления. Сочетая данные из SQL-запросов с гибкостью и вариантами визуализации Excel, мы легко можем создавать динамические отчеты и графики.

Модель данных и общая идея

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

Цель этой статьи – продемонстрировать, как мы можем объединить данные, возвращаемые из SQL-запросов, с экспортом данных SQL Server в Excel. Это сочетание может быть невероятно мощным, потому что Excel предоставляет множество вариантов для форматирования, расчетов и построения графиков. Кроме того, Excel широко используется и знаком многим людям, что облегчает работу с ним по сравнению с базами данных.

Использование запроса PIVOT

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

Вот пример запроса:

-- отчет (включая динамический PIVOT)
DECLARE @columns NVARCHAR(MAX) = '',
        @query NVARCHAR(MAX) = '';

-- получить все имена столбцов для таблицы, которую нам нужно для сводки
SELECT @columns += QUOTENAME(TRIM(co.outcome_text)) + ','
FROM call_outcome co
ORDER BY co.outcome_text;

-- удалить "," с конца строки
SET @columns = LEFT(@columns, LEN(@columns) - 1);

-- динамический SQL-запрос
SET @query = '
SELECT *
FROM (
    SELECT
        rc.city_id,
        rc.city_name,
        rd.call_duration
    FROM (
        SELECT
            c.id AS city_id,
            c.city_name,
            co.id AS call_outcome_id,
            co.outcome_text
        FROM
            call_outcome co
        CROSS JOIN
            city c
    ) rc
    LEFT JOIN (
        SELECT
            ci.id AS city_id,
            co.id AS call_outcome_id,
            DATEDIFF(SECOND, c.start_time, c.end_time) AS call_duration
        FROM
            call c
        INNER JOIN
            call_outcome co ON c.call_outcome_id = co.id
        INNER JOIN
            customer cu ON c.customer_id = cu.id
        INNER JOIN
            city ci ON cu.city_id = ci.id
    ) rd ON rc.city_id = rd.city_id AND rc.call_outcome_id = rd.call_outcome_id
) report_data
PIVOT(
    COUNT(call_duration)
    FOR outcome_text IN (' + @columns + ')
) AS pivot_table;';

-- выполнить динамический запрос
EXECUTE sp_executesql @query;

После выполнения этого запроса мы получим желаемую сводную таблицу со всеми необходимыми данными. Теперь перейдем к использованию экспорта данных SQL Server в Excel.

Экспорт данных SQL Server в Excel

SQL Server предоставляет простой способ экспортировать результаты запроса в Excel. Просто скопируйте результат запроса и вставьте его в лист Excel, и вы сможете воспользоваться возможностями форматирования и визуализации Excel.

Вот как можно экспортировать результат запроса в Excel:

  1. Выполните запрос и выберите весь результат запроса.
  2. Выберите опцию “Копировать с заголовками” из выпадающего списка.
  3. Вставьте результат запроса в лист Excel.

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

Создание панелей управления без запроса PIVOT

В некоторых случаях использование запроса PIVOT напрямую в SQL Server может быть невозможным или необязательным. Вот несколько сценариев, когда вы можете захотеть создать сводную таблицу и график напрямую в Excel:

  1. У вас уже есть готовый SQL-запрос и вы предпочитаете манипулировать результатом в Excel, а не преобразовывать его в запрос PIVOT.
  2. Ваша СУБД не поддерживает запросы на сводные таблицы или динамические запросы.
  3. Вам нужны исходные данные для других целей, таких как создание нескольких сводных таблиц или их комбинирование с другими данными в Excel.
  4. Вам удобнее создавать сводную таблицу и график в Excel, а не в SQL Server.

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

Заключение

Экспорт данных SQL Server в Excel – это мощное сочетание, которое позволяет нам использовать преимущества как SQL Server, так и Excel. Сочетая данные из SQL-запросов с возможностями форматирования и визуализации Excel, мы легко можем создавать динамические отчеты и панели управления. Независимо от того, выберете ли вы использование запроса PIVOT в SQL Server или создание сводной таблицы напрямую в Excel, возможности бесконечны. С экспортом данных SQL Server в Excel вы можете создавать информативные панели управления, которые предоставляют ценные показатели вашего бизнеса.

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.