SQL „Pivot“ - žinokite, kaip konvertuoti eilutes į stulpelius



Šis straipsnis apie „SQL Pivot“ yra išsamus vadovas, kaip eilutės lygio duomenis konvertuoti į stulpelių duomenis su išsamiais pavyzdžiais.

Santykinis saugokite didžiulius duomenų kiekius lentelių pavidalu. Šiose lentelėse gali būti bet koks eilučių ir stulpelių skaičius. Bet ką daryti, jei turėtumėte pakeisti eilutės lygio duomenis į stulpelių duomenis? Na, šiame straipsnyje apie „SQL Pivot“ aš jums parodysiu, kaip galite konvertuoti eilutes į SQL serverio stulpelį.

Šiame straipsnyje bus aptariamos šios temos:





Kas yra PIVOT SQL?

PIVOT naudojamas lentelės vertei pasukti konvertuojant vieno stulpelio unikalias vertes į kelis stulpelius. Jis naudojamas eilutėms pasukti į stulpelių reikšmes ir, jei reikia, paleidžia apibendrintas likusių stulpelių reikšmes.

Kita vertus, UNPIVOT naudojama priešingoms operacijoms atlikti. Taigi, jis naudojamas konvertuoti konkrečios lentelės stulpelius į stulpelių reikšmes.



Tęsdami šį straipsnį, supraskime „SQL Pivot“ sintaksę.

Sintaksė:

PASIRINKTI Nepaskirstytą stulpelio pavadinimą, [Pirmojo pasukto stulpelio pavadinimą] AS Stulpelio pavadinimą, [Antro suvestinio stulpelio pavadinimą] AS Stulpelio pavadinimą, [Trečio suvestinio stulpelio pavadinimą] AS Kolonos pavadinimą, ... [Paskutinio suvestinio stulpelio pavadinimą] AS Stulpelio pavadinimą iš (SELECT užklausa, kuri sukuria duomenis) AS [pseudonimas pradinei užklausai] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column, kurio reikšmės taps stulpelių antraštėmis] IN ([First Pivoted ColumnName], [Second Pivived ColumnName], [Third Pivoted ColumnName] ... [paskutinis pasukamas stulpelis])) AS [„Pivot“ lentelės slapyvardis]

Čiataip pat galite naudoti Įsakymas „UŽSAKYTI“ rūšiuoti reikšmes didėjimo arba mažėjimo tvarka. Dabar, kai žinote, kas yra PIVOT SQL ir pagrindinėje jos sintaksėje, leiskite mums judėti į priekį ir pamatyti, kaip juo naudotis.

Pavyzdžiai

Kad geriau suprastumėte, apsvarstysiu šią lentelę, kad paaiškinčiau visus pavyzdžius.



Tiekėjo lentelė:

Tiekėjo ID Gamybos dienos Kaina Kliento ID PurchaseID
vienas121230 mvienuolikaP1
2dvidešimt vienas1543 m22P2
3322. 3. 4. 5vienuolikaP3
414876522P1
542345233P3
631543133P1
7412342 mvienuolikaP2
854365422P2
9331234 mvienuolikaP3
1056683233P2

Parašykime paprastą užklausą, kad gautume vidutines kiekvieno kliento išlaidas.

PASIRINKITE „CustomerID“, AVG (kaina) kaip „AverageCostofCustomer“ iš tiekėjų grupės pagal „CustomerID“

Išvestis:

Kliento ID AverageCostofCustomer
vienuolika1787,75
224654
335238.33

Tarkime, kad norime pasukti aukščiau pateiktą lentelę. Čia stulpelio „CustomerID“ reikšmės taps stulpelių antraštėmis.

- Sukurkite „Pivot“ lentelę su viena eilute ir trimis stulpeliais. PASIRINKITE „AverageCostofCustomer“ AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (kaina) FOR CustomerID IN ( [11], [22], [33])) „AS PivotTable“

Išvestis:

Kaina_According_To_Customers vienuolika2233
AverageCostofCustomer 1787,7546545238.33

Pastaba: Kai naudosite suvestinės funkcijos naudojant PIVOT, skaičiuojant agregatą, į nulines reikšmes neatsižvelgiama.

Na, tai buvo pagrindinis pavyzdys, bet dabar supraskime, kaip veikė PIVOT sąlyga.

PIVOT sąlygos veikimas

Kaip galite nurodyti aukščiau, norėdami sukurti PIVOT LENTEL,, turite atlikti šiuos veiksmus:

  • Pasirinkite stulpelius, kuriuos norite pasukti
  • Tada pasirinkite šaltinio lentelę.
  • Taikykite PIVOT operatorių ir tada naudokite kaupimo funkcijas.
  • Nurodykite sukimo reikšmes.

Pasirinkite stulpelius, kuriuos norite pasukti

Iš pradžių turime nurodyti laukus, kurie bus įtraukti į mūsų rezultatus. Mūsų pavyzdyje aš atsižvelgiau į „Pivot“ lentelės stulpelį „AverageCostofCustomer“. Tada mes sukūrėme tris kitus stulpelius su stulpelių antraštėmis 11, 22 ir 33. Pavyzdys-

PASIRINKITE „AverageCostofCustomer“ AS Cost_According_To_Customers, [11], [22], [33]

Pasirinkite šaltinio lentelę

Tada turite nurodyti sakinį SELECT, kuris grąžins suvestinės lentelės šaltinio duomenis. Mūsų pavyzdyje iš lentelės „Tiekėjai“ grąžiname „CustomerID“ ir „Cost“.

(PASIRINKITE kliento ID, kainą iš tiekėjų) AS SourceTable

Taikykite PIVOT operatorių ir tada naudokite kaupimo funkcijas

Tada turite nurodyti suvestinę funkciją, kuri bus naudojama kuriant suvestinę lentelę. Mūsų pavyzdyje vidutinėms sąnaudoms apskaičiuoti naudojau AVG funkciją.

PIVOT (AVG (kaina)

Nurodykite sukimo reikšmes

Galiausiai turite paminėti vertes, kurios turi būti įtrauktos į gautą sukimosi lentelę. Šios vertės bus naudojamos kaip stulpelių antraštės suvestinėje lentelėje.

c ++ rūšiuokite masyvą
FOR „CustomerID IN“ ([11], [22], [33])) „AS PivotTable“

Taip veikia PIVOT operatoriai. Šiame straipsnyje apie SQL PIVOT, leiskite mums suprasti, kuo jis skiriasi nuo SQL UNPIVOT.

SQL UNPIVOT

SQL UNPIVOT operatorius naudojamas priešingai nei PIVOT operacijai atlikti. Jis naudojamas stulpelio duomenims pasukti į eilutės lygio duomenis. UNPIVOT sintaksė yra panaši į PIVOT. Vienintelis skirtumas yra tas, kad jūs turite naudoti ' UNPIVOT “ .

Pavyzdys:

Sukurkime lentelę su stulpeliais „SupplierID“, „AAA“, „BBB“ ir „CCC“. Be to, įterpkite keletą reikšmių.

CREATE TABLE sampletable (Tiekėjo ID int, AAA int, BBB int, CCC int) EITI ĮDĖTI Į atrankines VERTYBES (1,3,5,6) ĮDĖTI Į atrinktas VERTYBES (2,9,2,8) ĮDĖTI Į atrinktas VERTYBES (3, 8,1,7) EITI

Išvestis:

Tiekėjo ID AAA BBB CCC
vienas356
2928
38vienas7

Tarkime, norime atsukti lentelę. Norėdami tai padaryti, galite kreiptis į šį kodą:

PASIRINKITE „SupplierID“, klientus, produktus iš „SELECT SELECTD“, „AAA“, „BBB“, „CCC“ iš pavyzdžių rinkinio) p UNPIVOT (produktai klientams (AAA, BBB, CCC)), pvz., GO
Tiekėjo ID Klientai Produktai

vienas

AAA

3

vienas

BBB

5

vienas

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

vienas

3

CCC

7

Taip galite naudoti SQL PIVOT ir UNPIVOT. Tuo mes baigėme šį straipsnį. Tikiuosi, jūs supratote, kaip naudoti SQL. Jei norite sužinoti daugiau apie „MySQL“ ir susipažinkite su šia atviro kodo reliacine duomenų baze, tada patikrinkite mūsų kuris ateina su instruktorių vedamomis tiesioginėmis treniruotėmis ir realių projektų patirtimi. Šie mokymai padės jums išsamiau suprasti „MySQL“ ir padės jums įsisavinti šį dalyką.

Turite mums klausimą? Prašau tai paminėti šio straipsnio komentarų skyriuje apie „SQL Pivot“ ir aš susisieksiu su jumis.