SQL Pivot - Vet hvordan du konverterer rader til kolonner



Denne artikkelen om SQL Pivot er en omfattende guide om hvordan du konverterer data på radnivå til kolonnedata med grundige eksempler.

Relasjonelt lagre enorme mengder data i form av tabeller. Disse tabellene kan ha et hvilket som helst antall rader og kolonner. Men hva om du måtte endre data på radnivå til kolonnedata? Vel, i denne artikkelen om SQL Pivot, vil jeg vise deg hvordan du kan konvertere rader til en kolonne i en SQL Server.

Følgende emner vil bli dekket i denne artikkelen:





Hva er PIVOT i SQL?

PIVOT brukes til å rotere tabellverdien ved å konvertere de unike verdiene til en enkelt kolonne til flere kolonner. Den brukes til å rotere radene til kolonneverdier og kjører aggregasjoner når det er nødvendig på de gjenværende kolonneverdiene.

UNPIVOT, derimot, brukes til å utføre motsatte operasjoner. Så det brukes til å konvertere kolonnene i en bestemt tabell til kolonneverdier.



Fortsett i denne artikkelen, la oss forstå syntaksen til SQL Pivot.

Syntaks:

VELG ikke-svingt kolonnenavn, [første svingte kolonnenavn] som kolonnenavn, [andre svingte kolonnenavn] som kolonnenavn, [tredje svingete kolonnenavn] som kolonnenavn, ... [siste svingede kolonnenavn] som kolonnenavn FRA (SELECT spørring som produserer dataene) AS [alias for det opprinnelige spørsmålet] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column hvis verdier blir kolonneoverskrifter] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last pivotert kolonne])) AS [alias for pivottabellen]

Her,du kan også bruke BESTILL AV Klausul for å sortere verdiene enten i stigende eller synkende rekkefølge. Nå som du vet hva som er PIVOT i SQL og dens grunnleggende syntaks, la oss gå videre og se hvordan du bruker den.

hvordan snu en streng i python

Eksempler

For bedre forståelse vil jeg vurdere følgende tabell for å forklare deg alle eksemplene.



Leverandør Tabell:

Leverandør-ID DaysofProduksjon Koste Kunde ID PurchaseID
en121230elleveP1
2tjueen154322P2
3322. 3. 4. 5elleveP3
414876522P1
542345233P3
631543133P1
7412342elleveP2
854365422P2
9331234elleveP3
1056683233P2

La oss skrive et enkelt spørsmål for å hente gjennomsnittlig kostnad for hver kunde.

VELG CustomerID, AVG (Cost) AS AverageCostofCustomer FROM Leverandører GROUP BY CustomerID

Produksjon:

Kunde ID Gjennomsnittlig kostnadskunde
elleve1787,75
224654
335238,33

La oss si at vi vil dreie tabellen ovenfor. Her blir CustomerID-kolonneverdiene kolonneoverskriftene.

- Opprett pivottabell med en rad og tre kolonner VELG 'Gjennomsnittlig kostnadskunde' SOM kostnad_tilsvarende_til kunder, [11], [22], [33] FRA (VELG kundeID, kostnad FRA leverandører) SOM kildetabell PIVOT (AVG (kostnad) FOR kundeID IN ( [11], [22], [33])) AS pivottabell

Produksjon:

Cost_According_To_Customers elleve2233
Gjennomsnittlig kostnadskunde 1787,7546545238,33

Merk: Når du bruker samlede funksjoner med PIVOT vurderes ikke nullverdier når du beregner en aggregering.

Vel, det var et grunnleggende eksempel, men la oss nå forstå hvordan PIVOT-setningen fungerte.

Arbeid med PIVOT-ledd

Som du kan se ovenfor, må du følge trinnene nedenfor for å opprette en PIVOT-TABELL:

  • Velg kolonner for svinging
  • Velg deretter en kildetabell.
  • Bruk PIVOT-operatøren, og bruk deretter de samlede funksjonene.
  • Nevn pivotverdier.

Velg kolonner for svinging

I utgangspunktet må vi spesifisere feltene som skal inkluderes i resultatene. I vårt eksempel vurderte jeg kolonnen AverageCostofCustomer i pivottabellen. Så opprettet vi tre andre kolonner med kolonneoverskriftene 11, 22 og 33. Eksempel-

VELG 'Gjennomsnittlig kostnadskunde' som kostnad_til_kunder, [11], [22], [33]

Velg kildetabell

Deretter må du spesifisere SELECT-setningen som returnerer kildedataene for pivottabellen. I vårt eksempel returnerer vi kunde-ID og kostnad fra tabellen leverandører.

(VELG kundeID, kostnad fra leverandører) AS kildetabell

Bruk PIVOT-operatøren, og bruk deretter de samlede funksjonene

Deretter må du spesifisere den samlede funksjonen som skal brukes mens du lager pivottabellen. I vårt eksempel har jeg brukt AVG-funksjonen til å beregne gjennomsnittskostnaden.

PIVOT (AVG (kostnad)

Nevn pivotverdier

Til slutt må du nevne verdiene som må inkluderes i den resulterende pivottabellen. Disse verdiene vil bli brukt som kolonneoverskrifter i pivottabellen.

FOR KundeID IN ([11], [22], [33])) Sentraltabell

Slik fungerer PIVOT-operatørene. Fortsett i denne artikkelen om SQL PIVOT, la oss forstå hvor forskjellig det er fra SQL UNPIVOT.

SQL UNPIVOT

SQL UNPIVOT-operatøren brukes til å utføre den motsatte operasjonen til PIVOT. Den brukes til å rotere kolonnedataene til data på radnivå. Syntaksen til UNPIVOT ligner på PIVOT. Den eneste forskjellen er at du må bruke ' UNPIVOT ” .

Eksempel:

La oss lage en tabell med kolonnene SupplierID, AAA, BBB og CCC. Sett også inn få verdier.

CREATE TABLE sampletable (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

Produksjon:

Leverandør-ID AAA BBB CCC
en356
2928
38en7

La oss si at vi ønsker å dreie bordet. For å gjøre det kan du henvise til følgende kode:

VELG LeverandørID, kunder, produkter FRA (VELG leverandørD, AAA, BBB, CCC FRA sampletable) p UNPIVOT (Produkter FOR KUNDER I (AAA, BBB, CCC)) SOM eksempel GO
Leverandør-ID Kunder Produkter

en

AAA

3

en

BBB

5

en

sortere tall c ++

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

en

3

dyp kopi vs grunne kopi java

CCC

7

Slik kan du bruke SQL PIVOT og UNPIVOT. Med dette kommer vi til en slutt på denne artikkelen. Jeg håper du forsto hvordan du bruker SQL. Hvis du ønsker å lære mer om MySQL og bli kjent med denne åpen kildekode-relasjonsdatabasen, så sjekk ut vår som kommer med instruktørstyrt liveopplæring og reell prosjektopplevelse. Denne opplæringen vil hjelpe deg med å forstå MySQL grundig og hjelpe deg med å mestre emnet.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne artikkelen om SQL Pivot, og jeg kommer tilbake til deg.