SQL Pivot - Weet hoe u rijen naar kolommen kunt converteren



Dit artikel over SQL Pivot is een uitgebreide gids voor het converteren van gegevens op rijniveau naar gegevens in kolomvorm met uitgebreide voorbeelden.

Relationeel sla gigantische hoeveelheden gegevens op in de vorm van tabellen. Deze tabellen kunnen een willekeurig aantal rijen en kolommen hebben. Maar wat als u de gegevens op rijniveau moest wijzigen in kolomgegevens? Welnu, in dit artikel over SQL Pivot zal ik je laten zien hoe je rijen naar een kolom in een SQL Server kunt converteren.

In dit artikel komen de volgende onderwerpen aan bod:





Wat is PIVOT in SQL?

PIVOT wordt gebruikt om de tabelwaarde te roteren door de unieke waarden van een enkele kolom om te zetten in meerdere kolommen. Het wordt gebruikt om de rijen naar kolomwaarden te roteren en voert indien nodig aggregaties uit op de resterende kolomwaarden.

UNPIVOT, aan de andere kant, wordt gebruikt om de tegenovergestelde bewerkingen uit te voeren. Het wordt dus gebruikt om de kolommen van een specifieke tabel naar kolomwaarden te converteren.



Laten we verder gaan in dit artikel en de syntaxis van SQL Pivot begrijpen.

Syntaxis:

SELECT Niet-gedraaide kolomnaam, [Eerste gedraaide kolomnaam] AS Kolomnaam, [Tweede gedraaide kolomnaam] AS Kolomnaam, [Derde gedraaide kolomnaam] AS Kolomnaam, ... [Laatste gedraaide kolomnaam] AS Kolomnaam FROM (SELECTEER query die de gegevens produceert) AS [alias voor de eerste zoekopdracht] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName van de kolom waarvan de waarden kolomkoppen worden] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last draaikolom])) AS [alias voor de draaitabel]

Hier,u kunt ook de ORDER BY-clausule om de waarden in oplopende of aflopende volgorde te sorteren. Nu u weet wat PIVOT is in SQL en de basissyntaxis ervan, gaan we verder en kijken hoe u het kunt gebruiken.

wat is een pojo-gebaseerd programmeermodel

Voorbeelden

Voor een beter begrip zal ik de volgende tabel overwegen om u alle voorbeelden uit te leggen.



Leverancier tafel:

Leverancier ID Dagen van fabricage Kosten Klanten ID Aankoop-ID
een121230elfP1
2eenentwintig154322P2
3322. 3. 4. 5elfP3
414876522P1
542345233P3
631543133P1
7412342elfP2
854365422P2
9331234elfP3
1056683233P2

Laten we een eenvoudige zoekopdracht schrijven om de gemiddelde kosten van elke klant op te halen.

SELECTEER CustomerID, AVG (Cost) AS AverageCostofCustomer FROM Suppliers GROUP BY CustomerID

Uitgang:

Klanten ID AverageCostofCustomer
elf1787,75
224654
335238.33

Laten we nu zeggen dat we de bovenstaande tabel willen draaien. Hier worden de CustomerID-kolomwaarden de kolomkoppen.

- Maak een draaitabel met één rij en drie kolommen SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) ALS PivotTable

Uitgang:

Cost_According_To_Customers elf2233
AverageCostofCustomer 1787,7546545238.33

Opmerking: Wanneer u geaggregeerde functies met PIVOT worden null-waarden niet in aanmerking genomen bij het berekenen van een aggregatie.

Nou, dat was een eenvoudig voorbeeld, maar laten we nu begrijpen hoe de PIVOT-clausule werkte.

Werking van PIVOT-clausule

Zoals u hierboven kunt raadplegen, moet u de onderstaande stappen volgen om een ​​DRAAITABEL te maken:

  • Selecteer kolommen om te draaien
  • Selecteer vervolgens een brontabel.
  • Pas de PIVOT-operator toe en gebruik vervolgens de statistische functies.
  • Noem spilwaarden.

Selecteer kolommen om te draaien

In eerste instantie moeten we de velden specificeren die in onze resultaten moeten worden opgenomen. In ons voorbeeld heb ik de kolom AverageCostofCustomer in de draaitabel overwogen. Vervolgens hebben we drie andere kolommen gemaakt met de kolomkoppen 11, 22 en 33. Voorbeeld-

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

Selecteer de brontabel

Vervolgens moet u de SELECT-instructie opgeven die de brongegevens voor de draaitabel retourneert. In ons voorbeeld retourneren we de klant-ID en kosten uit de tabel met leveranciers.

(KIES klant-ID, kosten VAN leveranciers) ALS Brontabel

Pas de PIVOT-operator toe en gebruik vervolgens de statistische functies

Vervolgens moet u de verzamelfunctie opgeven die moet worden gebruikt bij het maken van de draaitabel. In ons voorbeeld heb ik de AVG-functie gebruikt om de gemiddelde kosten te berekenen.

PIVOT (AVG (kosten)

Noem spilwaarden

Ten slotte moet u de waarden vermelden die in de resulterende draaitabel moeten worden opgenomen. Deze waarden worden gebruikt als kolomkoppen in de draaitabel.

VOOR klant-ID IN ([11], [22], [33])) ALS draaitabel

Dat is hoe de PIVOT-operators werken. Laten we verdergaan in dit artikel over SQL PIVOT, laten we begrijpen hoe verschillend het is van SQL UNPIVOT.

SQL UNPIVOT

De SQL UNPIVOT-operator wordt gebruikt om de tegenovergestelde bewerking uit te voeren als die van PIVOT. Het wordt gebruikt om de kolomgegevens te roteren naar gegevens op rijniveau. De syntaxis van UNPIVOT is vergelijkbaar met die van PIVOT. Het enige verschil is dat u de ' UNPIVOT ' .

Voorbeeld:

Laten we een tabel maken met de kolommen SupplierID, AAA, BBB en CCC. Voeg ook enkele waarden in.

CREATE TABEL sampletable (SupplierID int, AAA int, BBB int, CCC int) GA INVOEGEN IN sampletable WAARDEN (1,3,5,6) INVOEGEN IN sampletable WAARDEN (2,9,2,8) INVOEGEN IN sampletable WAARDEN (3, 8,1,7) GAAN

Uitgang:

Leverancier ID AAA BBB CCC
een356
2928
38een7

Laten we nu zeggen dat we de tafel willen losmaken. Om dat te doen, kunt u de volgende code gebruiken:

SELECTEER leverancier-ID, klanten, producten VAN (SELECTEER leverancierD, AAA, BBB, CCC van sampletable) p UNPIVOT (producten voor klanten IN (AAA, BBB, CCC)) als voorbeeld GO
Leverancier ID Klanten Producten

een

AAA

3

een

BBB

5

een

wat is een javascript-evenement

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

def __init __ (zelf)

3

AAA

8

3

BBB

een

3

CCC

7

Dat is hoe u de SQL PIVOT en UNPIVOT kunt gebruiken. Hiermee komen we een einde aan dit artikel. Ik hoop dat je hebt begrepen hoe je SQL moet gebruiken. Als u meer wilt weten over MySQL en maak kennis met deze open-source relationele database, bekijk dan onze die wordt geleverd met live training onder leiding van een instructeur en real-life projectervaring. Deze training zal je helpen MySQL diepgaand te begrijpen en je te helpen het onderwerp onder de knie te krijgen.

Heeft u een vraag voor ons? Vermeld het alstublieft in het commentaargedeelte van dit artikel over SQL Pivot en ik neem zo spoedig mogelijk contact met u op.