SQL Pivot - osaa muuntaa rivit sarakkeiksi



Tämä artikkeli SQL Pivotista on kattava opas siitä, miten rivitason tiedot muunnetaan saraketiedoiksi perusteellisten esimerkkien avulla.

Suhteellinen varastoi suuria määriä tietoja taulukoiden muodossa. Näissä taulukoissa voi olla mikä tahansa määrä rivejä ja sarakkeita. Mutta entä jos joudut vaihtamaan rivitason tiedot saraketietoihin? No, tässä artikkelissa SQL Pivotista näytän sinulle, kuinka voit muuntaa rivit sarakkeeksi SQL Serverissä.

Tässä artikkelissa käsitellään seuraavia aiheita:





Mikä on PIVOT SQL: ssä?

PIVOTia käytetään kiertämään taulukon arvoa muuntamalla yhden sarakkeen yksilölliset arvot useiksi sarakkeiksi. Sitä käytetään kiertämään rivit sarakearvoiksi ja suoritetaan aggregaatit tarvittaessa muille sarakearvoille.

UNPIVOTia käytetään toisaalta päinvastaisiin toimiin. Joten sitä käytetään muuntaa tietyn taulukon sarakkeet sarakearvoiksi.



Tämän artikkelin jatkaessa ymmärrämme SQL Pivotin syntaksin.

Syntaksi:

VALITSE Ei-käännetty sarakkeen nimi, [Ensimmäisen käännetyn sarakkeen nimi] AS-sarakkeen nimi, [toisen käännetyn sarakkeen nimi] AS-sarakkeen nimi, [kolmannen käännetyn sarakkeen nimi] AS-sarakkeen nimi, ... [Viimeisen käännetyn sarakkeen nimi] AS-sarakkeen nimi FROM (SELECT-kysely, joka tuottaa tiedot) AS [alias alkuperäiselle kyselylle] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column, amelynek arvoista tulee sarakeotsikot] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [viimeinen kääntyvä sarake])) AS [pivot-taulukon alias]

Tässä,voit käyttää myös ORDER BY -lauseke lajitella arvot joko nousevassa tai laskevassa järjestyksessä. Nyt kun tiedät mikä on PIVOT SQL: ssä ja sen perussyntaksissa, siirry eteenpäin ja katsotaan kuinka sitä käytetään.

Esimerkkejä

Paremman ymmärryksesi vuoksi harkitsen seuraavaa taulukkoa selittääkseni kaikki esimerkit.



Toimittajataulukko:

ToimittajaID Valmistuspäivät Kustannus Asiakas ID Ostotunnus
yksi121230yksitoistaP1
2kaksikymmentäyksi154322P2
3322. 3. 4. 5yksitoistaP3
414876522P1
542345233P3
631543133P1
7412342yksitoistaP2
854365422P2
9331234yksitoistaP3
1056683233P2

Kirjoitetaan yksinkertainen kysely kunkin asiakkaan keskimääräisten kustannusten noutamiseksi.

Valitse CustomerID, AVG (Kustannukset) AS AverageCostofCustomer toimittajalta Ryhmä CustomerID mukaan

Tuotos:

Asiakas ID AverageCostofCustomer
yksitoista1787,75
224654
335238,33

Sanotaan nyt, että haluamme kääntää yllä olevaa taulukkoa. Tässä CustomerID-sarakearvoista tulee sarakeotsikot.

- Luo pivot-taulukko yhdellä rivillä ja kolmella sarakkeella VALITSE 'Keskimääräinen kustannusasiakkaat' AS Kustannusarviointi_asiakkaat, [11], [22], [33] LÄHETTÄJÄ (VALITSE asiakastunnus, Kustannukset toimittajilta) AS SourceTable PIVOT (AVG (Kustannukset) asiakastunnukselle) ( [11], [22], [33])) AS PivotTable

Tuotos:

Cost_According_To_Customers yksitoista2233
AverageCostofCustomer 1787,7546545238,33

Huomautus: Kun käytät aggregaattitoiminnot PIVOT: n kanssa nolla-arvoja ei oteta huomioon laskettaessa aggregaatiota.

No, se oli perusesimerkki, mutta ymmärretään nyt, kuinka PIVOT-lauseke toimi.

PIVOT-lausekkeen toiminta

Kuten voit viitata edellä, PIVOT-taulukon luomiseksi sinun on noudatettava seuraavia vaiheita:

  • Valitse sarakkeet kääntöä varten
  • Valitse sitten lähdetaulukko.
  • Käytä PIVOT-operaattoria ja käytä sitten koontitoimintoja.
  • Mainitse kääntöarvot.

Valitse sarakkeet kääntöä varten

Aluksi meidän on määritettävä kentät, jotka sisällytetään tulokseemme. Esimerkissämme tarkastelin Pivot-taulukon AverageCostofCustomer -saraketta. Sitten loimme kolme muuta saraketta sarakeotsikoilla 11, 22 ja 33. Esimerkki-

VALITSE 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]

Valitse lähdetaulukko

Seuraavaksi sinun on määritettävä SELECT-käsky, joka palauttaa pivot-taulukon lähdetiedot. Palautamme esimerkissämme CustomerID ja Cost toimittajien taulukosta.

(SELECT CustomerID, Cost FROM Suppliers) AS SourceTable

Käytä PIVOT-operaattoria ja käytä sitten koontitoimintoja

Seuraavaksi sinun on määritettävä koontitoiminto, jota käytetään, kun luot pivot-taulukkoa. Esimerkissämme olen käyttänyt AVG-toimintoa keskimääräisten kustannusten laskemiseen.

PIVOT (AVG (hinta)

Mainitse kääntöarvot

Lopuksi sinun on mainittava arvot, jotka on sisällytettävä tuloksena olevaan pivot-taulukkoon. Näitä arvoja käytetään sarakkeen otsikoina pivot-taulukossa.

FOR CustomerID IN ([11], [22], [33])) AS PivotTable

Näin PIVOT-operaattorit toimivat. Siirtymällä tähän artikkeliin SQL PIVOT -ohjelmassa ymmärretään, kuinka erilainen se on SQL UNPIVOT -palvelusta.

SQL UNPIVOT

SQL UNPIVOT -operaattoria käytetään päinvastaiseen toimintaan kuin PIVOT. Sitä käytetään saraketietojen kiertämiseen rivitason tiedoiksi. UNPIVOTin syntaksi on samanlainen kuin PIVOT: n. Ainoa ero on, että sinun on käytettävä ' UNPIVOT ” .

Esimerkki:

Luodaan taulukko sarakkeilla SupplierID, AAA, BBB ja CCC. Lisää myös muutama arvo.

CREATE TABLE sampletable (toimittajaID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable ARVES (1,3,5,6) INSERT INTO sampletable ARVOT (2,9,2,8) INSERT IN sampletable ARVES (3, 8,1,7) GO

Tuotos:

ToimittajaID AAA BBB CCC
yksi356
2928
38yksi7

Sanokaamme nyt, että haluamme irrottaa taulukon. Voit tehdä tämän viittaamalla seuraavaan koodiin:

SELECT SupplierID, Asiakkaat, Tuotteet FROM (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Products for Customer IN IN (AAA, BBB, CCC)) AS esimerkki GO
ToimittajaID Asiakkaat Tuotteet

yksi

AAA

3

yksi

muuntaa objekti taulukon php: ksi

BBB

5

yksi

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

yksi

3

CCC

7

Näin voit käyttää SQL PIVOTia ja UNPIVOTia. Tämän avulla olemme päässeet tämän artikkelin loppuun. Toivon, että ymmärrät kuinka käyttää SQL: ää. Jos haluat oppia lisää MySQL ja tutustu tähän avoimen lähdekoodin relaatiotietokantaan ja tutustu sitten joka sisältää ohjaajan vetämän live-koulutuksen ja tosielämän projektikokemuksen. Tämä koulutus auttaa ymmärtämään MySQL: ää perusteellisesti ja auttaa sinua hallitsemaan aihetta.

Onko sinulla kysymys meille? Mainitse se tämän SQL Pivot -artikkelin kommenttiosassa, ja palaan sinuun.