Suhteline talletage tohutult palju andmeid tabelite kujul. Nendes tabelites võib olla suvaline arv ridu ja veerge. Aga mis siis, kui peaksite rea taseme andmed muutma veergude andmeteks? Noh, selles artiklis SQL Pivoti kohta näitan teile, kuidas saate ridu teisendada SQL Serveri veeruks.
Selles artiklis käsitletakse järgmisi teemasid:
mis on java jada
Mis on PIVOT SQL-is?
PIVOT-i kasutatakse tabeli väärtuse pööramiseks, teisendades ühe veeru unikaalsed väärtused mitmeks veeruks. Seda kasutatakse ridade pööramiseks veeruväärtusteks ja käivitatakse liitmise vajadusel ülejäänud veeruväärtuste korral.
UNPIVOT-i kasutatakse seevastu vastupidiste toimingute tegemiseks. Niisiis kasutatakse seda konkreetse tabeli veergude teisendamiseks veeruväärtusteks.
Selles artiklis edasi liikudes andke meile mõista SQL Pivoti süntaks.
Süntaks:
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 päring, mis toodab andmed) AS [alias esialgse päringu jaoks] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column), mille väärtustest saavad veerupäised] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [viimane pööratav veerg])) AS [pöördtabeli pseudonüüm]
Siin,saate kasutada ka Klausel ORDER BY väärtuste sortimiseks kas kasvavas või kahanevas järjekorras. Nüüd, kui teate, mis on PIVOT SQL-is ja selle põhisüntaksis, liikuge edasi ja vaadake, kuidas seda kasutada.
Näited
Teie paremaks mõistmiseks kaalun järgnevat tabelit, et selgitada teile kõiki näiteid.
Tarnija tabel:
Tarnija ID | Valmistamise päevad | Maksumus | Kliendi ID | Ostu ID |
üks | 12 | 1230 | üksteist | P1 |
2 | kakskümmend üks | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | üksteist | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | üksteist | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | üksteist | P3 |
10 | 56 | 6832 | 33 | P2 |
Kirjutame lihtsa päringu, et leida iga kliendi keskmine kulu.
VALI CustomerID, AVG (maksumus) AS AverageCostofCustomer FROM Tarnijate rühmast CustomerID järgi
Väljund:
Kliendi ID | AverageCostofCustomer |
üksteist | 1787,75 |
22 | 4654 |
33 | 5238,33 |
Oletagem nüüd, et tahame ülaltoodud tabelit pöörata. Siin saavad veeru päisteks veeru CustomerID väärtused.
- Looge ühe rea ja kolme veeruga Pivot-tabel. Valige 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (maksumus) for CustomerID IN ( [11], [22], [33])) AS PivotTable
Väljund:
Kulud_salvestamine_klientidele | üksteist | 22 | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238,33 |
Märge: Kui kasutate koondfunktsioonid PIVOT-i korral ei arvestata koondväärtuste arvutamisel nullväärtusi.
Noh, see oli põhinäide, kuid mõistkem nüüd, kuidas PIVOT-klausel töötas.
PIVOT-klausli töötamine
Nagu eespool viidatud, peate PIVOT-tabeli loomiseks järgima alltoodud samme:
- Valige veerud pööramiseks
- Seejärel valige allikatabel.
- Rakendage PIVOT-operaator ja seejärel kasutage koondfunktsioone.
- Mainige pöördväärtusi.
Valige veerud pööramiseks
Esialgu peame täpsustama väljad, mis meie tulemustesse kaasatakse. Meie näites käsitlesin tabeli Pivot veergu AverageCostofCustomer. Seejärel lõime veel kolm veergu veergude päistega 11, 22 ja 33. Näide-
SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]
Valige allikatabel
Järgmisena peate määrama lause SELECT, mis tagastab pöördtabeli lähteandmed. Näites tagastame kliendi ID ja kulu tarnijate tabelist.
(SELECT CustomerID, kulu tarnijatelt) AS SourceTable
Rakendage PIVOT-operaator ja seejärel kasutage koondfunktsioone
Järgmisena peate määrama liigendtabeli loomisel kasutatava koondfunktsiooni. Meie näites olen keskmise kulu arvutamiseks kasutanud AVG funktsiooni.
PIVOT (AVG (maksumus)
Mainige pöördväärtusi
Lõpuks peate mainima väärtused, mis tuleb lisada saadud pöördtabelisse. Neid väärtusi kasutatakse liigendtabeli veerupäistena.
FOR CustomerID IN ([11], [22], [33])) AS PivotTable
Nii töötavad PIVOT-operaatorid. Selles SQL PIVOT-i artiklis edasi liikudes andke meile mõista, kui palju see erineb SQL UNPIVOT-ist.
SQL UNPIVOT
Operaatorit SQL UNPIVOT kasutatakse PIVOT-ile vastupidise toimingu sooritamiseks. Seda kasutatakse veeru andmete pööramiseks rea taseme andmeteks. UNPIVOT-i süntaks sarnaneb PIVOT-i süntaksiga. Ainus erinevus on see, et peate kasutama ' UNPIVOT ” .
Näide:
Looge tabel veergudega SupplierID, AAA, BBB ja CCC. Samuti sisestage vähe väärtusi.
CREATE TABLE proovivõtt (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) GO
Väljund:
Tarnija ID | AAA | BBB | CCC |
üks | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | üks | 7 |
Ütleme nüüd, et tahame tabeli pööramist lahti keerata. Selleks saate viidata järgmisele koodile:
SELECT SupplierID, kliendid, tooted FROM (SELECT SupplierD, AAA, BBB, CCC sampletable) p UNPIVOT (tooted klientidele IN (AAA, BBB, CCC)) AS näide GO
Tarnija ID | Kliendid | Tooted |
üks | AAA | 3 |
üks | BBB | 5 |
üks kuupäeva andmetüüp sql näites | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 kuidas sorteerida massiivi c ++ keeles | AAA | 8 |
3 | BBB | üks |
3 | CCC | 7 |
Nii saate kasutada SQL PIVOT ja UNPIVOT. Sellega jõuame selle artikli lõpuni. Loodan, et saite aru, kuidas SQL-i kasutada. Kui soovite rohkem teada saada MySQL ja tutvuge selle avatud lähtekoodiga relatsioonide andmebaasiga ning vaadake siis meie mis on varustatud juhendajate juhitud elava koolituse ja reaalse elu projektikogemusega. See koolitus aitab teil MySQL-i põhjalikult mõista ja aitab teil selle teema üle meisterlikkust saavutada.
Kas teil on meile küsimus? Palun mainige seda selle artikli kommentaaride jaotises SQL Pivoti kohta ja pöördun teie poole.