Sziasztok!
Ha lenne egy felmérés arról, hogy mik azok a mondatok, amiket a legpontosabban mondanának el ugyanúgy az emberek,akkor szerintem a PIVOT fogalma jó eséllyel pályázhatna egy dobogós helyezésre!
Mi a Pivot? "Hááát, megfordítja 90 fokkal az adatokat, és az oszlopokból sorok lesznek, a sorokból meg oszlopok."
Nice.
- És hogy működik a gyakorlatban?
- És ha Pivotolok egy táblát, majd azt Unpivotolom (nekem a visszapivotolás sokkal jobban tetszene) akkor az eredeti értékeket kapom vissza vajon, vagy nem?
- És ...
Nézzük meg:
Készítünk egy játszós táblát (sql2012 szintaktika), ami mondjuk a Snooker játékosokat fogja tárolni, és azt, hogy ezek a profik melyik pontszerző tornát nyerték meg és mennyiszer.
Azok kedvéért elmondom, akik kevésbé szeretik a snookert, hogy minden évben minden tornát megrendeznek, és világbajnokság is minden évben van.
CREATE TABLE Snooker(Nev VARCHAR(35), Torna VARCHAR(40), Menny INT)
INSERT Snooker(Nev,Torna,Menny) VALUES('Sullivan','VB',2),
VALUES('
Sullivan
','China Open',2),
VALUES('
Sullivan
','Masters',4),
VALUES('
Sullivan
','British Open',1),
VALUES('Trump','Masters',1),
VALUES('Trump','British Open',3),
VALUES('
Sullivan
','VB',4)
Nézzünk egy alap lekérdezést :
Select * from Snooker
Nev Torna Menny
-------------------------------------------------
Sullivan VB 2
Sullivan China Open 2
Sullivan Masters 4
Sullivan British Open 1
Trump Masters 1
Trump British Open 3
Sullivan
VB 4
Nézzünk egy Pivot lekérdezést a Tornákra vonatkozóan:
SELECT Torna,Sullivan,Trump
FROM (
SELECT Nev, Torna, Menny FROM Snooker) abc
PIVOT (SUM(Menny) FOR Nev IN (Sullivan, Trump)) AS pvt
ORDER BY Torna
Torna Sullivan Trump
------------------------------------------------------------------
British Open 1 3
China Open 2 NULL
Masters 4 1
VB 6 NULL
És ezt már lehet is kiexportálni excelbe! :)
Példa az Unpivotra:
SELECT Torna,Sullivan,Trump
FROM (
SELECT Nev, Torna, Menny FROM Snooker) abc
PIVOT (SUM(Menny) FOR Nev IN (Sullivan, Trump)) AS pvt
UNPIVOT (Menny FOR Nev IN (Sullivan, Trump)) As unpvt
Név Torna Mennyiség
---------------------------------------------------
Sullivan VB 6
Sullivan China Open 2
Sullivan Masters 4
Sullivan British Open 1
Trump Masters 1
Trump British Open 3
Konklúzió: Az utolsó példában is lehetett látni, hogy aggregált függvények miatt simán előfordulhat az, hogy a Pivot utána Unpivot nem állítja elő nekünk az eredeti adatokat!
Hajrá Pivot! :)
Nincsenek megjegyzések:
Megjegyzés küldése