Co to jest PIVOT i UNPIVOT w SQL?
W świecie baz danych, SQL (Structured Query Language) jest podstawowym narzędziem do zarządzania i manipulowania danymi. Dwie z bardziej zaawansowanych funkcji SQL to PIVOT i UNPIVOT, które umożliwiają przekształcanie danych w różne formy, co jest szczególnie przydatne w analizie danych. W tym artykule omówimy, czym są te funkcje, jak działają, oraz przedstawimy przykłady ich zastosowania.
PIVOT w SQL
Funkcja PIVOT w SQL służy do przekształcania danych z formatu wierszowego na kolumnowy. Jest to szczególnie przydatne, gdy chcemy przedstawić dane w bardziej czytelny sposób, na przykład w raportach lub dashboardach.
Przykład zastosowania PIVOT
Załóżmy, że mamy tabelę sprzedaży, która zawiera dane o sprzedaży produktów w różnych miesiącach:
| Produkt | Miesiąc | Sprzedaż |
|---|---|---|
| Produkt A | Styczeń | 100 |
| Produkt A | Luty | 150 |
| Produkt B | Styczeń | 200 |
| Produkt B | Luty | 250 |
Chcemy przekształcić te dane, aby każdy produkt miał swoje kolumny dla poszczególnych miesięcy. Możemy to zrobić za pomocą funkcji PIVOT:
SELECT Produkt,
[Styczeń],
[Luty]
FROM
(
SELECT Produkt, Miesiąc, Sprzedaż
FROM Sprzedaz
) AS SourceTable
PIVOT
(
SUM(Sprzedaż)
FOR Miesiąc IN ([Styczeń], [Luty])
) AS PivotTable;
Wynik tej operacji będzie wyglądał następująco:
| Produkt | Styczeń | Luty |
|---|---|---|
| Produkt A | 100 | 150 |
| Produkt B | 200 | 250 |
UNPIVOT w SQL
Funkcja UNPIVOT działa odwrotnie do PIVOT, przekształcając dane z formatu kolumnowego na wierszowy. Jest to przydatne, gdy chcemy znormalizować dane lub przygotować je do dalszej analizy.
Przykład zastosowania UNPIVOT
Załóżmy, że mamy tabelę z danymi sprzedaży w formacie kolumnowym:
| Produkt | Styczeń | Luty |
|---|---|---|
| Produkt A | 100 | 150 |
| Produkt B | 200 | 250 |
Chcemy przekształcić te dane na format wierszowy. Możemy to zrobić za pomocą funkcji UNPIVOT:
SELECT Produkt,
Miesiąc,
Sprzedaż
FROM
(
SELECT Produkt, [Styczeń], [Luty]
FROM Sprzedaz
) AS SourceTable
UNPIVOT
(
Sprzedaż FOR Miesiąc IN ([Styczeń], [Luty])
) AS UnpivotTable;
Wynik tej operacji będzie wyglądał następująco:
| Produkt | Miesiąc | Sprzedaż |
|---|---|---|
| Produkt A | Styczeń | 100 |
| Produkt A | Luty | 150 |
| Produkt B | Styczeń | 200 |
| Produkt B | Luty | 250 |
Zastosowania PIVOT i UNPIVOT
Funkcje PIVOT i UNPIVOT są szeroko stosowane w różnych dziedzinach, takich jak:
- Analiza biznesowa: Przekształcanie danych sprzedażowych, finansowych i operacyjnych w bardziej czytelne formy.
- Raportowanie: Tworzenie raportów, które wymagają dynamicznego przekształcania danych.
- Data Warehousing: Normalizacja i denormalizacja danych w hurtowniach danych.
Podsumowanie
Funkcje PIVOT i UNPIVOT w SQL są potężnymi narzędziami do przekształcania danych, które mogą znacznie ułatwić analizę i raportowanie. PIVOT pozwala na przekształcanie danych z formatu wierszowego na kolumnowy, co jest przydatne w tworzeniu czytelnych raportów. Z kolei UNPIVOT umożliwia przekształcanie danych z formatu kolumnowego na wierszowy, co jest przydatne w normalizacji danych. Znajomość tych funkcji i umiejętność ich zastosowania może znacząco zwiększyć efektywność pracy z bazami danych.