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 |
vienas | 12 | 1230 m | vienuolika | P1 |
2 | dvidešimt vienas | 1543 m | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | vienuolika | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 m | vienuolika | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 m | vienuolika | P3 |
10 | 56 | 6832 | 33 | P2 |
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 |
vienuolika | 1787,75 |
22 | 4654 |
33 | 5238.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 | vienuolika | 22 | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238.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 |
vienas | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | vienas | 7 |
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.