Zapytanie przestawne pozwala nam na obrócenie wyniku zapytania o 90 stopni i zamianę niektórych wierszy w kolumny (trochę jak rozkładanie parasola). Na skrzyżowaniu nowopowstałych kolumn oraz pozostałych wierszy otrzymujemy wartości z kolumn, których nie wykorzystaliśmy ani do wierszy ani do kolumn. Prostym przykładem niech będzie tabela mecz gdzie przechowujemy nazwiska graczy, numery meczów oraz ilość strzelonych goli, czyli mamy kolumny: gracz, mecz, polowa, gole. Za pomocą tabeli przestawnej chcemy uzyskać czytelniejszy widok: będziemy mieć wiersze z nazwiskami, kolumny odpowiadające poszczególnym meczom, a komórki będą zawierać sumę strzelonych goli.
Czyli z tabeli:
| gracz | mecz | polowa | gole |
|---|---|---|---|
| marek | 1 | 1 | 2 |
| zdzisiek | 1 | 1 | 1 |
| marek | 1 | 2 | 3 |
| heniek | 1 | 1 | 1 |
| heniek | 2 | 2 | 1 |
| zdzisiek | 2 | 1 | 1 |
| marek | 3 | 2 | 2 |
| heniek | 3 | 1 | 1 |
| heniek | 3 | 2 | 1 |
| zdzisiek | 3 | 2 | 3 |
chcemy otrzymać:
| gracz | mecz1 | mecz2 | mecz3 |
|---|---|---|---|
| heniek | 1 | 1 | 2 |
| marek | 5 | 0 | 2 |
| zdzisiek | 1 | 1 | 3 |
W systemach bazodanowych Oracle czy też MSSQL mamy dostępne operatory PIVOT, ale my najczęściej zajmujemy się na tym blogu MySQL, więc fajnie by było przyjrzeć się temu operatorowi w tymże systemie.
Przyjrzałeś się? Bo ja się przyglądałem i nie znalazłem. Niestety póki co ten operator jest niedostępny.
Zrobimy pivot?! Namówiłeś!