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 |
een | 12 | 1230 | elf | P1 |
2 | eenentwintig | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | elf | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | elf | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | elf | P3 |
10 | 56 | 6832 | 33 | P2 |
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 |
elf | 1787,75 |
22 | 4654 |
33 | 5238.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 | elf | 22 | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238.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 |
een | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | een | 7 |
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.