Relațional stocați cantități enorme de date sub formă de tabele. Aceste tabele pot avea orice număr de rânduri și coloane. Dar ce se întâmplă dacă ar trebui să schimbați datele la nivel de rând în date coloane? Ei bine, în acest articol despre SQL Pivot, vă voi arăta cum puteți converti rândurile într-o coloană dintr-un SQL Server.
Următoarele subiecte vor fi tratate în acest articol:
Ce este PIVOT în SQL?
PIVOT este utilizat pentru a roti valoarea tabelului prin conversia valorilor unice ale unei singure coloane în mai multe coloane. Este folosit pentru a roti rândurile la valorile coloanei și rulează agregări atunci când este necesar pentru valorile coloanei rămase.
UNPIVOT, pe de altă parte, este utilizat pentru efectuarea operațiunilor opuse. Deci, este folosit pentru a converti coloanele unui anumit tabel în valori de coloană.
Mai departe în acest articol, să înțelegem sintaxa SQL Pivot.
Sintaxă:
SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (SELECT interogare care produce datele) AS [alias pentru interogarea inițială] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName al coloanei ale cărei valori vor deveni anteturi de coloană] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last coloana pivotată])) AS [alias pentru tabelul pivot]
Aici,puteți utiliza, de asemenea, Clauza ORDER BY pentru a sorta valorile fie în ordine crescătoare, fie descendentă. Acum, că știți ce este PIVOT în SQL și sintaxa sa de bază, permiteți-ne să mergem mai departe și să vedem cum să-l folosim.
când să folosiți acest lucru în java
Exemple
Pentru o mai bună înțelegere, voi lua în considerare următorul tabel pentru a vă explica toate exemplele.
Tabel furnizor:
ID furnizor | DaysofManufacture | Cost | Număr de înregistrare client | ID cumpărare |
unu | 12 | 1230 | unsprezece | P1 |
2 | douăzeci și unu | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | unsprezece | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | unsprezece | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | unsprezece | P3 |
10 | 56 | 6832 | 33 | P2 |
Permiteți-ne să scriem o interogare simplă pentru a recupera costul mediu cheltuit de fiecare client.
SELECTAȚI ID-ul clientului, AVG (Cost) CA Cost mediu al clientului DIN GRUPUL Furnizorilor după ID-ul clientului
Ieșire:
Număr de înregistrare client | AverageCostofCustomer |
unsprezece | 1787,75 |
22 | 4654 |
33 | 5238,33 |
Acum, să spunem că vrem să pivotăm tabelul de mai sus. Aici, valorile coloanei CustomerID vor deveni anteturile coloanei.
- Creați un tabel pivot cu un rând și trei coloane SELECTAȚI „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])) AS PivotTable
Ieșire:
Cost_According_To_Customers | unsprezece | 22 | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238,33 |
Notă: Când folosești funcții agregate cu PIVOT, valorile nule nu sunt luate în considerare în timpul calculării unei agregări.
Ei bine, acesta a fost un exemplu de bază, dar să înțelegem acum cum a funcționat clauza PIVOT.
Funcționarea clauzei PIVOT
După cum puteți consulta mai sus, pentru a crea un TABEL PIVOT, trebuie să urmați pașii de mai jos:
- Selectați coloane pentru pivotare
- Apoi, selectați un tabel sursă.
- Aplicați operatorul PIVOT și apoi utilizați funcțiile agregate.
- Menționați valorile pivot.
Selectați coloane pentru pivotare
Inițial, trebuie să specificăm câmpurile care trebuie incluse în rezultatele noastre. În exemplul nostru, am luat în considerare coloana AverageCostofCustomer din tabelul pivot. Apoi am creat alte trei coloane cu anteturile de coloană 11, 22 și 33. Exemplu-
SELECTAȚI „AverageCostofCustomer” AS Cost_According_To_Customers, [11], [22], [33]
Selectați tabelul sursă
Apoi, trebuie să specificați instrucțiunea SELECT care va returna datele sursă pentru tabelul pivot. În exemplul nostru, returnăm CustomerID și Cost din tabelul Furnizori.
(SELECȚIONAȚI ID-ul clientului, costul de la furnizori) CA sursă
Aplicați operatorul PIVOT și apoi utilizați funcțiile agregate
Apoi, trebuie să specificați funcția agregată care va fi utilizată la crearea tabelului pivot. În exemplul nostru, am folosit funcția AVG pentru a calcula costul mediu.
PIVOT (AVG (Cost)
Menționați valorile pivot
În cele din urmă, trebuie să menționați valorile care trebuie incluse în tabelul pivot rezultat. Aceste valori vor fi utilizate ca titluri de coloană din tabelul pivot.
PENTRU CustomerID IN ([11], [22], [33])) CA tabel pivot
Așa funcționează operatorii PIVOT. Trecând mai departe în acest articol despre SQL PIVOT, să înțelegem cât de diferit este de SQL UNPIVOT.
SQL UNPIVOT
Operatorul SQL UNPIVOT este utilizat pentru a efectua operația opusă celei a PIVOT. Este folosit pentru a roti datele coloanei în date la nivel de rând. Sintaxa UNPIVOT este similară cu cea a PIVOT. Singura diferență este că trebuie să utilizați ' UNPIVOT ” .
Exemplu:
Să creăm un tabel cu coloanele FurnizorID, AAA, BBB și CCC. De asemenea, introduceți câteva valori.
CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) INTRODUȚI ÎN VALOARE sampletable (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUE (3, 8,1,7) GO
Ieșire:
ID furnizor | AAA | BBB | CCC |
unu | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | unu | 7 |
Acum, să spunem, vrem să ne despivotăm tabelul. Pentru a face acest lucru, puteți consulta următorul cod:
SELECTAȚI Furnizorul ID, Clienții, Produsele DE LA (SELECȚIONEAZĂ Furnizorul, AAA, BBB, CCC DE la sampletable) p UNPIVOT (Produse PENTRU Clienții din (AAA, BBB, CCC)) CA exemplu GO
ID furnizor | Clienți | Produse |
unu | AAA | 3 |
unu | BBB | 5 |
unu sortează numerele c ++ | CCC | 6 |
2 | AAA | 9 |
2 final vs final vs finalize | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 | BBB | unu |
3 | CCC | 7 |
Așa puteți utiliza SQL PIVOT și UNPIVOT. Cu aceasta, ajungem la sfârșitul acestui articol. Sper că ați înțeles cum să utilizați SQL. Dacă doriți să aflați mai multe despre MySQL și cunoașteți această bază de date relațională open-source, apoi consultați-ne care vine cu instruire live condusă de instructor și experiență de proiect din viața reală. Această instruire vă va ajuta să înțelegeți în profunzime MySQL și vă va ajuta să obțineți stăpânirea asupra subiectului.
Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui articol despre SQL Pivot și vă voi răspunde.