SQL Pivot - znajte kako pretvoriti retke u stupce



Ovaj članak o SQL Pivot-u sveobuhvatan je vodič za pretvaranje podataka na razini retka u stupčaste podatke s detaljnim primjerima.

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
jedan121230jedanaestP1
2dvadeset i jedan1543. godine22P2
3322. 3. 4. 5jedanaestP3
414876522P1
542345233P3
631543133P1
7412342jedanaestP2
854365422P2
9331234jedanaestP3
1056683233P2

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
jedanaest1787,75
224654
335238,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 jedanaest2233
AverageCostofCustomer 1787,7546545238,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
jedan356
2928
38jedan7

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.