SQL Pivot - zināt, kā konvertēt rindas uz kolonnām



Šis raksts par SQL Pivot ir visaptveroša rokasgrāmata par to, kā pārveidot rindas līmeņa datus par kolonnu datiem, izmantojot padziļinātus piemērus.

Relāciju glabājiet milzīgu datu daudzumu tabulu veidā. Šīm tabulām var būt jebkurš rindu un kolonnu skaits. Bet kā būtu, ja rindas līmeņa dati būtu jāmaina uz kolonnu datiem? Nu, šajā rakstā par SQL Pivot es jums parādīšu, kā jūs varat konvertēt rindas uz kolonnu SQL Server.

Šajā rakstā tiks aplūkotas šādas tēmas:





Kas ir PIVOT SQL?

PIVOT izmanto, lai pagrieztu tabulas vērtību, pārveidojot vienas kolonnas unikālās vērtības vairākās kolonnās. To izmanto, lai pagrieztu rindas uz kolonnu vērtībām, un, ja nepieciešams, palaiž apkopojumus pārējām kolonnu vērtībām.

UNPIVOT savukārt tiek izmantots pretēju darbību veikšanai. Tātad, to izmanto, lai konkrētas tabulas kolonnas pārveidotu par kolonnu vērtībām.



Turpinot šo rakstu, ļaujiet mums saprast SQL Pivot sintaksi.

Sintakse:

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 vaicājums, kas ražo datus) AS [alias sākotnējam vaicājumam] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName of the column, kuras vērtības kļūs par kolonnu galvenēm] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [pēdējais pagriezta kolonna])) AS [aizstājvārds rakurstabulai]

Šeit,jūs varat arī izmantot Klausījums ORDER BY kārtot vērtības augošā vai dilstošā secībā. Tagad, kad jūs zināt, kas ir PIVOT SQL un tā pamata sintakse, ļaujiet mums virzīties uz priekšu un redzēt, kā to izmantot.

Piemēri

Lai jūs labāk saprastu, es apsvēršu šo tabulu, lai izskaidrotu visus piemērus.



Piegādātāja tabula:

SupplierID DaysofManufacture Izmaksas CustomerID PurchaseID
viens121230. gadsvienpadsmitP1
2divdesmitviens1543. gads22P2
3322. 3. 4. 5vienpadsmitP3
414876522P1
542345233P3
631543133P1
7412342vienpadsmitP2
854. lpp365422P2
9331234vienpadsmitP3
1056683233P2

Uzrakstīsim vienkāršu vaicājumu, lai iegūtu katra klienta vidējās izmaksas.

Atlasiet CustomerID, AVG (Izmaksas) kā AverageCostofCustomer no piegādātāju grupas pēc CustomerID

Izeja:

CustomerID AverageCostofCustomer
vienpadsmit1787.75
224654
335238.33

Tagad pieņemsim, ka mēs vēlamies pagriezt iepriekš minēto tabulu. Šeit kolonnu CustomerID vērtības kļūs par kolonnu galvenēm.

- Izveidojiet rakurstabulu ar vienu rindu un trim kolonnām. Atlasiet 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) kā SourceTable PIVOT (AVG (izmaksas) FOR CustomerID IN ( [11], [22], [33])) AS PivotTable

Izeja:

objektu masīvs java
Izmaksas_Acording_To_Customers vienpadsmit2233
AverageCostofCustomer 1787.7546545238.33

Piezīme: Kad jūs izmantojat apkopotās funkcijas izmantojot PIVOT, aprēķinot apkopojumu, nulles vērtības netiek ņemtas vērā.

Nu, tas bija pamatpiemērs, taču tagad sapratīsim, kā darbojās PIVOT klauzula.

PIVOT klauzulas darbība

Kā jūs varat norādīt iepriekš, lai izveidotu PIVOT TABLE, jums jāveic šādas darbības:

  • Atlasiet kolonnas pagriešanai
  • Pēc tam atlasiet avota tabulu.
  • Lietojiet PIVOT operatoru un pēc tam izmantojiet apkopošanas funkcijas.
  • Pieminiet pagrieziena vērtības.

Atlasiet kolonnas pagriešanai

Sākumā mums jānorāda lauki, kas jāiekļauj mūsu rezultātos. Mūsu piemērā es ņēmu vērā sleju AverageCostofCustomer tabulā Pivot. Tad mēs izveidojām vēl trīs kolonnas ar kolonnu galvenēm 11, 22 un 33. Piemērs

Atlasiet “AverageCostofCustomer” AS Cost_According_To_Customers, [11], [22], [33]

Atlasiet avota tabulu

Pēc tam jums jānorāda priekšraksts SELECT, kas atgriezīs rakurstabulas avota datus. Šajā piemērā mēs atgriežam CustomerID un Cost no tabulas Piegādātāji.

(SELECT klienta ID, izmaksas no piegādātājiem) AS SourceTable

Lietojiet PIVOT operatoru un pēc tam izmantojiet apkopošanas funkcijas

Tālāk jums jānorāda apkopošanas funkcija, kas jāizmanto, veidojot rakurstabulu. Mūsu piemērā vidējo izmaksu aprēķināšanai esmu izmantojis AVG funkciju.

PIVOT (AVG (izmaksas)

Pieminiet pagrieziena vērtības

Visbeidzot, jums ir jāpiemin vērtības, kas jāiekļauj iegūtajā rakurstabulā. Šīs vērtības tiks izmantotas kā kolonnu virsraksti rakurstabulā.

PAR CustomerID IN ([11], [22], [33])) AS PivotTable

Tā darbojas PIVOT operatori. Turpinot šo rakstu par SQL PIVOT, ļaujiet mums saprast, cik tas atšķiras no SQL UNPIVOT.

SQL UNPIVOT

Operators SQL UNPIVOT tiek izmantots, lai veiktu pretēju darbību kā PIVOT. To izmanto, lai kolonnas datus pagrieztu rindas līmeņa datos. UNPIVOT sintakse ir līdzīga PIVOT sintaksei. Vienīgā atšķirība ir tā, ka jums ir jāizmanto ' UNPIVOT ” .

Piemērs:

Izveidosim tabulu ar kolonnām SupplierID, AAA, BBB un CCC. Ievietojiet arī dažas vērtības.

CREATE TABLE paraugu kopa (SupplierID int, AAA int, BBB int, CCC int) IEVADIET IEVADIET izlases VĒRTĪBĀS (1,3,5,6) IEVADĪT PARAUGOS ņemamās VĒRTĪBĀS (2,9, 2,8) 8,1,7) IET

Izeja:

SupplierID AAA BBB CCC
viens356
2928
38viens7

Pieņemsim, ka mēs vēlamies atcelt galdu. Lai to izdarītu, varat atsaukties uz šo kodu:

Atlasīt piegādātājaID, klientus, produktus no (atlasīt piegādātājuD, AAA, BBB, CCC no paraugu ņemšanas) p UNPIVOT (produkti klientiem (AAA, BBB, CCC)) kā piemērs GO
SupplierID Klienti Produkti

viens

AAA

3

viens

BBB

5

viens

kā savienot mysql datu bāzi Java

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

viens

3

CCC

7

kā instalēt php uz

Tā jūs varat izmantot SQL PIVOT un UNPIVOT. Ar to mēs esam nonākuši pie šī raksta beigām. Es ceru, ka jūs sapratāt, kā izmantot SQL. Ja vēlaties uzzināt vairāk par MySQL un iepazīstiet šo atvērtā pirmkoda relāciju datu bāzi, pēc tam pārbaudiet mūsu kas nāk ar instruktoru vadītu tiešraides apmācību un reālās dzīves projektu pieredzi. Šīs apmācības palīdzēs padziļināti izprast MySQL un palīdzēs apgūt šo tēmu.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī raksta komentāru sadaļā par SQL Pivot, un es sazināšos ar jums.