<p>SQL PIVOT - это операция, которая позволяет изменять структуру таблицы в SQL-запросе, превращая строки в столбцы. Это полезная функция, которая позволяет агрегировать данные и преобразовывать их для анализа и отчетности.</p>
<p>Для лучшего понимания работы SQL PIVOT рассмотрим пример. Допустим, у нас есть таблица "Sales", которая содержит информацию о продажах определенного товара по различным месяцам. Каждая запись в таблице представляет отдельную продажу и содержит следующие столбцы: "ProductID" (идентификатор товара), "Month" (месяц), "Quantity" (количество проданных единиц) и "Amount" (сумма продаж).</p>
<p>Таблица "Sales" может выглядеть следующим образом:</p>
<pre class="hljs"><code class="hljs-sql">| ProductID | Month | Quantity | Amount |
| --------- | ------- | -------- | ------ |
| 1 | January | 10 | 100 |
| 1 | February| 15 | 150 |
| 2 | January | 5 | 50 |
| 2 | February| 8 | 80 |</code></pre>
<p>Чтобы использовать SQL PIVOT для преобразования строк в столбцы, мы можем выполнить следующий запрос:</p>
<pre class="hljs"><code class="hljs-sql">SELECT *
FROM
(
SELECT ProductID, Month, Quantity
FROM Sales
) src
PIVOT
(
SUM(Quantity)
FOR Month IN ([January], [February])
) pvt;
</code></pre>
<p>Результатом этого запроса будет следующая таблица:</p>
<pre class="hljs"><code class="hljs-sql">| ProductID | January | February |
| --------- | ------- | -------- |
| 1 | 10 | 15 |
| 2 | 5 | 8 |</code></pre>
<p>Здесь каждый месяц (January, February) превратился в столбец, а сумма проданных единиц за каждый месяц стала значением внутри соответствующих столбцов. Таким образом, мы можем видеть общее количество проданных единиц для каждого товара в каждом месяце.</p>
<p>Код SQL PIVOT состоит из двух частей: запрос к исходной таблице и оператор PIVOT. В запросе к исходной таблице мы выбираем столбцы, которые будут использованы для агрегации. В операторе PIVOT мы указываем, как мы хотим изменить структуру таблицы, указывая функцию агрегации (например, SUM), столбец, по которому будет выполняться агрегация (в данном случае "Quantity"), и столбец, который будет использоваться для создания столбцов в новой таблице (в данном случае "Month").</p>
<p>Важно отметить, что столбцы, которые мы хотим использовать для агрегации в операторе PIVOT, должны быть явно указаны в запросе к исходной таблице. В приведенном выше примере мы выбрали только столбцы "ProductID", "Month" и "Quantity", так как нам нужно было сосредоточиться на агрегации количества продаж.</p>
<p>SQL PIVOT позволяет проводить более сложные агрегации и преобразования данных, используя другие функции агрегации, такие как COUNT, AVG, MIN, MAX, и т. д. Вы также можете выполнить PIVOT с несколькими столбцами для создания более сложных отчетов.</p>
<p>В заключение, SQL PIVOT - это мощный инструмент, который позволяет преобразовывать структуру таблицы в SQL-запросе, превращая строки в столбцы и обеспечивая агрегацию данных для анализа и отчетности. Надеюсь, этот развернутый ответ помог вам понять, как использовать SQL PIVOT для ваших задач в базе данных.</p>