SQL Pivot - Ved hvordan man konverterer rækker til kolonner



Denne artikel om SQL Pivot er en omfattende guide til, hvordan man konverterer data på række på niveau til søjledata med dybtgående eksempler.

Relationel gem enorme mængder data i form af tabeller. Disse tabeller kan have et vilkårligt antal rækker og kolonner. Men hvad hvis du skulle ændre data på række på niveau til søjledata? Nå, i denne artikel om SQL Pivot vil jeg vise dig, hvordan du kan konvertere rækker til en kolonne i en SQL Server.

Følgende emner vil blive behandlet i denne artikel:





Hvad er PIVOT i SQL?

PIVOT bruges til at rotere tabelværdien ved at konvertere de unikke værdier for en enkelt kolonne til flere kolonner. Det bruges til at rotere rækkerne til kolonneværdier og kører sammenlægninger, når det er nødvendigt på de resterende kolonneværdier.

UNPIVOT bruges derimod til at udføre de modsatte operationer. Så det bruges til at konvertere kolonnerne i en bestemt tabel til kolonneværdier.



Gå videre i denne artikel, lad os forstå syntaksen for SQL Pivot.

Syntaks:

VÆLG Ikke-drejet kolonnenavn, [Første drejede kolonnenavn] AS kolonnenavn, [Anden drejet kolonnenavn] AS kolonnenavn, [Tredje drejet kolonnenavn] AS kolonnenavn, ... [Sidste drejet kolonnenavn] AS kolonnenavn FRA (VÆLG forespørgsel, der producerer dataene) AS [alias for den første forespørgsel] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column, hvis værdier bliver kolonneoverskrifter] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last drejet kolonne])) AS [alias for pivottabellen]

Her,du kan også bruge ORDER BY-klausul for at sortere værdierne enten i stigende eller faldende rækkefølge. Nu hvor du ved, hvad der er PIVOT i SQL og dens grundlæggende syntaks, lad os gå videre og se, hvordan du bruger det.

funktion overbelastning c ++

Eksempler

For din bedre forståelse vil jeg overveje følgende tabel for at forklare alle eksemplerne.



Leverandørtabel:

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

Lad os skrive en simpel forespørgsel for at hente de gennemsnitlige omkostninger, som hver kunde har brugt.

VÆLG Kunde-ID, AVG (pris) SOM GennemsnitskostnadKunde FRA Leverandører GRUPPE VED Kunde-ID

Produktion:

Kunde ID AverageCostofCustomer
elleve1787,75
224654
335238,33

Lad os sige, at vi vil dreje ovenstående tabel. Her bliver CustomerID-kolonneværdierne kolonneoverskrifter.

- Opret pivottabel med en række og tre kolonner VÆLG 'Gennemsnitskostnadskunde' AS Omkostning_til_Kunder, [11], [22], [33] FRA (VÆLG kundeID, pris FRA leverandører) SOM kildetabel PIVOT (AVG (pris) FOR kundeID IN [11], [22], [33])) SOM Pivottabel

Produktion:

Cost_According_To_Customers elleve2233
AverageCostofCustomer 1787,7546545238,33

Bemærk: Når du bruger samlede funktioner med PIVOT tages ikke nulværdier med i beregningen af ​​en sammenlægning.

Nå, det var et grundlæggende eksempel, men lad os nu forstå, hvordan PIVOT-klausulen fungerede.

Arbejde med PIVOT-klausul

Som du kan henvise til ovenfor, skal du følge nedenstående trin for at oprette en PIVOT-TABEL:

  • Vælg kolonner, der skal drejes
  • Vælg derefter en kildetabel.
  • Anvend PIVOT-operatøren, og brug derefter de samlede funktioner.
  • Nævn pivotværdier.

Vælg kolonner, der skal drejes

Oprindeligt skal vi specificere de felter, der skal medtages i vores resultater. I vores eksempel betragtede jeg kolonnen AverageCostofCustomer i pivottabellen. Derefter oprettede vi tre andre kolonner med kolonneoverskrifterne 11, 22 og 33. Eksempel-

VÆLG 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]

Vælg kildetabel

Derefter skal du angive SELECT-sætningen, som returnerer kildedataene til pivottabellen. I vores eksempel returnerer vi kunde-ID og pris fra tabellen leverandører.

(VÆLG kunde-id, pris FRA leverandører) AS kildetabel

Anvend PIVOT-operatøren, og brug derefter de samlede funktioner

Derefter skal du angive den samlede funktion, der skal bruges, mens du opretter drejetabellen. I vores eksempel har jeg brugt AVG-funktionen til at beregne de gennemsnitlige omkostninger.

PIVOT (AVG (pris)

Nævn pivotværdier

Endelig skal du nævne de værdier, der skal inkluderes i den resulterende pivottabel. Disse værdier vil blive brugt som kolonneoverskrifter i pivottabellen.

FOR KundeID I ([11], [22], [33])) SOM Pivottabel

Sådan fungerer PIVOT-operatørerne. Gå videre i denne artikel om SQL PIVOT, lad os forstå, hvor forskellig det er fra SQL UNPIVOT.

SQL UNPIVOT

SQL UNPIVOT-operatøren bruges til at udføre den modsatte operation til den af ​​PIVOT. Det bruges til at rotere søjledataene til data på række-niveau. Syntaksen for UNPIVOT svarer til PIVOT. Den eneste forskel er, at du skal bruge ' UNPIVOT ” .

Eksempel:

Lad os oprette en tabel med kolonnerne SupplierID, AAA, BBB og CCC. Indsæt også få værdier.

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

Produktion:

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

Lad os nu sige, at vi vil fjerne drejningen af ​​bordet. For at gøre det kan du henvise til følgende kode:

VÆLG leverandørID, kunder, produkter FRA (VÆLG leverandørD, AAA, BBB, CCC FRA sampletabel) p UNPIVOT (Produkter TIL KUNDER I (AAA, BBB, CCC)) SOM eksempel GO
Leverandør-ID Kunder Produkter

en

AAA

3

en

BBB

5

en

metodeoverbelastning og metodeoverstyring

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

konvertere objekt til array php

3

BBB

en

3

CCC

7

Sådan kan du bruge SQL PIVOT og UNPIVOT. Med dette kommer vi til en ende på denne artikel. Jeg håber, du forstod, hvordan man bruger SQL. Hvis du ønsker at lære mere om MySQL og lær denne open source relationsdatabase, og tjek derefter vores som kommer med instruktørstyret live træning og projektoplevelse i det virkelige liv. Denne træning hjælper dig med at forstå MySQL i dybden og hjælper dig med at opnå mestring over emnet.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne artikel om SQL Pivot, og jeg vender tilbage til dig.