Relacional emmagatzemar grans quantitats de dades en forma de taules. Aquestes taules poden tenir qualsevol nombre de files i columnes. Però, i si haguéssiu de canviar les dades de nivell de fila per dades columnars? Bé, en aquest article sobre SQL Pivot, us mostraré com podeu convertir files a una columna d’un SQL Server.
En aquest article es tractaran els temes següents:
Què és PIVOT a SQL?
PIVOT s’utilitza per girar el valor de la taula convertint els valors únics d’una sola columna en diverses columnes. S'utilitza per girar les files a valors de columna i executa agregacions quan es requereix als valors de columna restants.
UNPIVOT, en canvi, s’utilitza per dur a terme les operacions oposades. Per tant, s’utilitza per convertir les columnes d’una taula específica a valors de columna.
Seguint amb aquest article, entenem la sintaxi de SQL Pivot.
Sintaxi:
SELECT Nom de columna no pivotat, [Primer nom de columna pivotat] AS Nom de columna, [Segon nom de columna pivotat] AS Nom de columna, [Tercer nom de columna pivotat] AS Nom de columna, ... [Últim nom de columna pivotat] AS Nom de columna FROM (consulta SELECT que produeix les dades) COM [àlies per a la consulta inicial] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName de la columna els valors de la qual esdevindran capçaleres de columna] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last columna pivotada])) AS [àlies de la taula dinàmica]
Aquí,també podeu utilitzar el fitxer Clàusula ORDER BY per ordenar els valors en ordre ascendent o descendent. Ara que ja sabeu què és PIVOT a SQL i la seva sintaxi bàsica, anem a avançar i veurem com utilitzar-lo.
quan s’ha d’utilitzar a Java
Exemples
Per a una millor comprensió, examinaré la taula següent per explicar-vos tots els exemples.
Taula de proveïdors:
ID del proveïdor | Dies de fabricació | Cost | Identificació de client | ID de compra |
1 | 12 | 1230 | 11 | P1 |
2 | 21 | 1543 | 22 | P2 |
3 | 32 | 2345 | 11 | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | 11 | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | 11 | P3 |
10 | 56 | 6832 | 33 | P2 |
Escrivim una consulta senzilla per recuperar el cost mitjà invertit per cada client.
SELECCIONAR CustomerID, AVG (Cost) COM AverageCostofCustomer DEL GRUP DE PROVEiersDORS PER CustomerID
Sortida:
Identificació de client | AverageCostofCustomer |
11 | 1787.75 |
22 | 4654 |
33 | 5238.33 |
Ara, diguem que volem pivotar la taula anterior. Aquí, els valors de columna CustomerID es convertiran en capçaleres de columna.
- Creeu una taula dinàmica amb una fila i tres columnes SELECCIONA 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) COM a SourceTable PIVOT (AVG (Cost) PER A CustomerID IN ( [11], [22], [33])) AS Taula dinàmica
Sortida:
Cost_According_To_Customers | 11 | 22 | 33 |
AverageCostofCustomer | 1787.75 | 4654 | 5238.33 |
Nota: Quan utilitzeu funcions agregades amb PIVOT, no es tenen en compte els valors nuls mentre es calcula una agregació.
Bé, aquest va ser un exemple bàsic, però entenguem ara com funcionava la clàusula PIVOT.
Funcionament de la clàusula PIVOT
Com podeu consultar més amunt, per crear una TAULA PIVOT, heu de seguir els passos següents:
- Seleccioneu les columnes per pivotar
- A continuació, seleccioneu una taula d'origen.
- Apliqueu l'operador PIVOT i, a continuació, utilitzeu les funcions agregades.
- Esmenta els valors de pivot.
Seleccioneu les columnes per pivotar
Inicialment, hem d’especificar els camps que s’han d’incloure als nostres resultats. En el nostre exemple, he considerat la columna AverageCostofCustomer de la taula dinàmica. Després vam crear altres tres columnes amb les capçaleres de columna 11, 22 i 33. Exemple-
SELECCIONA 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]
Seleccioneu la taula font
A continuació, heu d'especificar la sentència SELECT que retornarà les dades d'origen de la taula dinàmica. En el nostre exemple, retornem l’identificador de client i el cost de la taula Proveïdors.
(SELECCIONAR ID de client, cost dels proveïdors) COM a taula de fonts
Apliqueu l'operador PIVOT i, a continuació, utilitzeu les funcions agregades
A continuació, heu d'especificar la funció agregada que s'ha d'utilitzar mentre es crea la taula dinàmica. En el nostre exemple, he utilitzat la funció AVG per calcular el cost mitjà.
PIVOT (AVG (cost)
Esmenta els valors de pivot
Finalment, heu d'esmentar els valors que s'han d'incloure a la taula dinàmica resultant. Aquests valors s’utilitzaran com a encapçalaments de columna a la taula dinàmica.
PER A CustomerID IN ([11], [22], [33])) COM a taula dinàmica
Així funcionen els operadors PIVOT. Seguint amb aquest article sobre SQL PIVOT, entenem la diferència que té de SQL UNPIVOT.
SQL UNPIVOT
L'operador SQL UNPIVOT s'utilitza per dur a terme l'operació contrària a la de PIVOT. S'utilitza per girar les dades de la columna en dades a nivell de fila. La sintaxi d'UNPIVOT és similar a la de PIVOT. L'única diferència és que heu d'utilitzar el fitxer ' UNPIVOT ” .
Exemple:
Creem una taula amb les columnes SupplierID, AAA, BBB i CCC. A més, inseriu pocs valors.
CREA TABLA mostrejable (ProveïdorID int, AAA int, BBB int, CCC int) VEURE INSERIT A VALORS mostrejables (1,3,5,6) INSERTAR A VALORS mostrejables (2,9,2,8) INSERTAR A VALORS mostrejables (3, 8,1,7) GO
Sortida:
ID del proveïdor | AAA | BBB | CCC |
1 | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | 1 | 7 |
Ara, diguem-ne, volem desintegrar la taula. Per fer-ho, podeu consultar el codi següent:
SELECCIONAR identificador de proveïdor, clients, productes FROM (SELECCIONAR proveïdorD, AAA, BBB, CCC FROM mostrejable) p UNPIVOT (Productes per a clients IN (AAA, BBB, CCC)) COM exemple GO
ID del proveïdor | Clients | Productes |
1 | AAA | 3 |
1 | BBB | 5 |
1 diferència entre la cerca connectada i la no connectada | CCC | 6 |
2 | AAA | 9 |
2 com establir el camí a Java | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 | BBB | 1 |
3 | CCC | 7 |
Així és com podeu utilitzar SQL PIVOT i UNPIVOT. Amb això, arribem al final d’aquest article. Espero que hagueu entès com utilitzar SQL. Si voleu obtenir més informació sobre MySQL i conegueu aquesta base de dades relacional de codi obert i, a continuació, consulteu la nostra que inclou formació en viu dirigida per un instructor i experiència en projectes reals. Aquesta formació us ajudarà a comprendre en profunditat MySQL i us ajudarà a dominar el tema.
Tens alguna pregunta? Esmenteu-lo a la secció de comentaris d’aquest article sobre SQL Pivot i us respondré.