Relacijski pohraniti ogromne količine podataka u obliku tablica. Te tablice mogu imati bilo koji broj redaka i stupaca. Ali, što ako biste podatke na razini retka morali promijeniti u stupčaste podatke? Pa, u ovom članku o SQL Pivotu pokazat ću vam kako možete pretvoriti retke u stupac na SQL poslužitelju.
Sljedeće teme bit će obrađene u ovom članku:
Što je PIVOT u SQL-u?
PIVOT se koristi za okretanje vrijednosti tablice pretvaranjem jedinstvenih vrijednosti jednog stupca u više stupaca. Koristi se za rotaciju redaka prema vrijednostima stupca i pokreće agregiranja kada je potrebno na preostalim vrijednostima stupca.
UNPIVOT se, pak, koristi za izvođenje suprotnih operacija. Dakle, koristi se za pretvaranje stupaca određene tablice u vrijednosti stupaca.
Nastavljajući dalje s ovim člankom, shvatimo sintaksu SQL Pivota.
Sintaksa:
SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnNAME FROM (SELECT upit koji proizvodi podatke) AS [alias za početni upit] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName stupca čije će vrijednosti postati zaglavlja stupaca] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last zaokretni stupac])) KAO [alias za zaokretnu tablicu]
Ovdje,možete koristiti i Klauzula ORDER BY za razvrstavanje vrijednosti u rastućem ili silaznom redoslijedu. Sad kad znate što je PIVOT u SQL-u i njegova osnovna sintaksa, krenimo naprijed i pogledajte kako ga koristiti.
Primjeri
Za vaše bolje razumijevanje, razmotrit ću sljedeću tablicu kako bih vam objasnio sve primjere.
Tablica dobavljača:
ID dobavljača | Danproizvodnje | Trošak | CustomerID | ID kupnje |
jedan | 12 | 1230 | jedanaest | P1 |
2 | dvadeset i jedan | 1543. godine | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | jedanaest | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | jedanaest | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | jedanaest | P3 |
10 | 56 | 6832 | 33 | P2 |
Napišimo jednostavan upit kako bismo dohvatili prosječni trošak svakog kupca.
ODABERITE ID kupca, prosj. (Trošak) KAO Prosječni trošak kupca OD GRUPE dobavljača prema kupcu
Izlaz:
CustomerID | AverageCostofCustomer |
jedanaest | 1787,75 |
22 | 4654 |
33 | 5238,33 |
Recimo sada da želimo zaokrenuti gornju tablicu. Ovdje će vrijednosti stupca CustomerID postati zaglavlja stupaca.
- Stvorite zaokretnu tablicu s jednim retkom i tri stupca ODABERITE 'AverageCostofCustomer' KAO Cost_According_To_Customers, [11], [22], [33] OD (SELECT CustomerID, Cost FROM dobavljača) KAO SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) KAO zaokretna tablica
Izlaz:
Troškovi_prihvataju_korisnike | jedanaest | 22 | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238,33 |
Bilješka: Kad koristite agregatne funkcije s PIVOT, null vrijednosti se ne uzimaju u obzir tijekom izračunavanja agregacije.
Pa, to je bio osnovni primjer, ali hajde da sada shvatimo kako je funkcionirala klauzula PIVOT.
Rad klauzule PIVOT
Kao što se gore možete pozvati, za stvaranje PIVOTNE STOLE morate slijediti korake u nastavku:
- Odaberite stupce za okretanje
- Zatim odaberite izvornu tablicu.
- Primijenite operator PIVOT, a zatim upotrijebite agregatne funkcije.
- Spomenite pivot vrijednosti.
Odaberite stupce za okretanje
U početku moramo odrediti polja koja će biti uključena u naše rezultate. U našem smo primjeru razmotrili stupac AverageCostofCustomer u pivot tablici. Zatim smo stvorili tri druga stupca sa zaglavljima stupaca 11, 22 i 33. Primjer-
ODABERITE 'AverageCostofCustomer' KAO Cost_According_To_Customers, [11], [22], [33]
Odaberite izvornu tablicu
Dalje, morate navesti izraz SELECT koji će vratiti izvorne podatke za zaokretnu tablicu. U našem primjeru vraćamo ID kupca i trošak iz tablice Dobavljači.
(ODABERITE ID kupca, trošak dobavljača) KAO Izvorna tablica
Primijenite operator PIVOT, a zatim upotrijebite agregatne funkcije
Dalje, morate navesti agregatnu funkciju koja će se koristiti tijekom stvaranja zaokretne tablice. U našem primjeru koristio sam funkciju AVG za izračun prosječnog troška.
PIVOT (AVG (trošak)
Spomenite pivot vrijednosti
Na kraju, morate spomenuti vrijednosti koje moraju biti uključene u rezultirajuću zaokretnu tablicu. Te će se vrijednosti koristiti kao naslovi stupaca u zaokretnoj tablici.
ZA CustomerID IN ([11], [22], [33])) KAO zaokretna tablica
Tako rade operateri PIVOT. Nastavljajući u ovom članku o SQL PIVOT-u, shvatimo koliko se razlikuje od SQL UNPIVOT-a.
SQL UNPIVOT
SQL UNPIVOT operator koristi se za izvršavanje operacija suprotnih operacijama PIVOT-a. Koristi se za rotaciju podataka stupaca u podatke na razini retka. Sintaksa UNPIVOT-a slična je sintaksi PIVOT-a. Jedina razlika je u tome što morate koristiti ' UNPIVOT ” .
Primjer:
Stvorimo tablicu sa stupcima SupplierID, AAA, BBB i CCC. Također, umetnite nekoliko vrijednosti.
CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) IDI INSERT INTO sampleable VALUES (1,3,5,6) INSERT INTO sampleable VALUES (2,9,2,8) INSERT INTO sampleable VALUES (3, 8,1,7) IDITE
Izlaz:
ID dobavljača | AAA | BBB | CCC |
jedan | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | jedan | 7 |
Recimo sada, želimo ukloniti tablicu. Da biste to učinili, možete se pozvati na sljedeći kod:
ODABERITE ID dobavljača, kupce, proizvode OD (ODABERITE dobavljačaD, AAA, BBB, CCC IZ uzorka) p UNPIVOT (Proizvodi za kupce u (AAA, BBB, CCC)) KAO primjer GO
ID dobavljača | Kupci | Proizvodi |
jedan | AAA def __init __ (samo) | 3 |
jedan | BBB | 5 |
jedan | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 | BBB | jedan r strojno učenje na primjeru |
3 | CCC | 7 |
Tako možete koristiti SQL PIVOT i UNPIVOT. Ovim smo došli do kraja ovog članka. Nadam se da ste razumjeli, kako koristiti SQL. Ako želite saznati više o MySQL i upoznajte ovu relacijsku bazu podataka otvorenog koda, a zatim pogledajte našu koja dolazi s treningom uživo pod vodstvom instruktora i iskustvom u stvarnom životu. Ovaj trening pomoći će vam da dublje razumijete MySQL i postignete ovladavanje tom temom.
Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog članka o SQL Pivotu i javiću vam se.