SQL Pivot - tea, kuidas teisendada ridu veergudeks



See artikkel SQL Pivoti kohta on põhjalik näide, kuidas rea taseme andmed teisendada veergudeks.

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
üks121230üksteistP1
2kakskümmend üks154322P2
3322. 3. 4. 5üksteistP3
414876522P1
542345233P3
631543133P1
7412342üksteistP2
854365422P2
9331234üksteistP3
1056683233P2

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
üksteist1787,75
224654
335238,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 üksteist2233
AverageCostofCustomer 1787,7546545238,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
üks356
2928
38üks7

Ü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.