Relazionale memorizzare enormi quantità di dati sotto forma di tabelle. Queste tabelle possono avere un numero qualsiasi di righe e colonne. Ma cosa succede se dovessi modificare i dati a livello di riga in dati a colonne? Bene, in questo articolo su SQL Pivot, ti mostrerò come convertire le righe in una colonna in un SQL Server.
In questo articolo verranno trattati i seguenti argomenti:
Cos'è PIVOT in SQL?
PIVOT viene utilizzato per ruotare il valore della tabella convertendo i valori univoci di una singola colonna in più colonne. Viene utilizzato per ruotare le righe in valori di colonna ed esegue aggregazioni quando richiesto sui valori di colonna rimanenti.
UNPIVOT, invece, viene utilizzato per eseguire le operazioni opposte. Quindi, viene utilizzato per convertire le colonne di una tabella specifica in valori di colonna.
Andando avanti in questo articolo, cerchiamo di capire la sintassi di SQL Pivot.
Sintassi:
SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Ultimo Pivoted ColumnName] AS ColumnName DA (SELEZIONA query che produce i dati) AS [alias per la query iniziale] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName della colonna i cui valori diventeranno intestazioni di colonna] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [ultimo colonna pivot])) AS [alias per la tabella pivot]
Qui,puoi anche usare il file Clausola ORDER BY per ordinare i valori in ordine crescente o decrescente. Ora che sai cos'è PIVOT in SQL e la sua sintassi di base, andiamo avanti e vediamo come usarlo.
Esempi
Per una tua migliore comprensione, prenderò in considerazione la seguente tabella per spiegarti tutti gli esempi.
Tabella fornitori:
ID fornitore | DaysofManufacture | Costo | Identificativo del cliente | ID acquisto |
uno | 12 | 1230 | undici | P1 |
2 | ventuno | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | undici | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | undici | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | undici | P3 |
10 | 56 | 6832 | 33 | P2 |
Scriviamo una semplice query per recuperare il costo medio speso da ogni cliente.
SELEZIONA ID cliente, AVG (costo) COME costo medio del cliente DA FORNITORI GRUPPO PER ID cliente
Produzione:
Identificativo del cliente | Costo medio del cliente |
undici | 1787.75 |
22 | 4654 |
33 | 5238.33 |
Ora, diciamo di voler ruotare la tabella sopra. Qui, i valori della colonna CustomerID diventeranno le intestazioni di colonna.
- Crea una tabella pivot con una riga e tre colonne SELEZIONA 'Costo medio del cliente' 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])) COME tabella pivot
Produzione:
Cost_According_To_Customers | undici | 22 | 33 |
Costo medio del cliente | 1787.75 | 4654 | 5238.33 |
Nota: Quando usi funzioni aggregate con PIVOT, i valori nulli non vengono considerati durante il calcolo di un'aggregazione.
Bene, questo era un esempio di base, ma ora capiamo come funzionava la clausola PIVOT.
Clausola di funzionamento PIVOT
Come puoi fare riferimento sopra, per creare una TAVOLA PIVOT, devi seguire i passaggi seguenti:
- Seleziona le colonne per la rotazione
- Quindi, seleziona una tabella di origine.
- Applicare l'operatore PIVOT e quindi utilizzare le funzioni di aggregazione.
- Menziona i valori pivot.
Seleziona le colonne per la rotazione
Inizialmente, dobbiamo specificare i campi da includere nei nostri risultati. Nel nostro esempio, ho considerato la colonna AverageCostofCustomer nella tabella pivot. Quindi abbiamo creato altre tre colonne con le intestazioni di colonna 11, 22 e 33. Esempio-
SELEZIONA 'Costo medio del cliente' AS Cost_According_To_Customers, [11], [22], [33]
Seleziona tabella di origine
Successivamente, è necessario specificare l'istruzione SELECT che restituirà i dati di origine per la tabella pivot. Nel nostro esempio, restituiamo CustomerID e Cost dalla tabella Suppliers.
(SELEZIONA ID cliente, costo DA fornitori) COME tabella di origine
Applicare l'operatore PIVOT e quindi utilizzare le funzioni di aggregazione
Successivamente, è necessario specificare la funzione di aggregazione da utilizzare durante la creazione della tabella pivot. Nel nostro esempio, ho utilizzato la funzione AVG per calcolare il costo medio.
PIVOT (AVG (costo)
Menziona i valori pivot
Infine, devi menzionare i valori che devono essere inclusi nella tabella pivot risultante. Questi valori verranno utilizzati come intestazioni di colonna nella tabella pivot.
FOR CustomerID IN ([11], [22], [33])) COME tabella pivot
È così che funzionano gli operatori PIVOT. Andando avanti in questo articolo su SQL PIVOT, cerchiamo di capire quanto sia diverso da SQL UNPIVOT.
SQL UNPIVOT
L'operatore SQL UNPIVOT viene utilizzato per eseguire l'operazione opposta a quella di PIVOT. Viene utilizzato per ruotare i dati della colonna in dati a livello di riga. La sintassi di UNPIVOT è simile a quella di PIVOT. L'unica differenza è che devi usare il file ' UNPIVOT ' .
al metodo stringa in java
Esempio:
Creiamo una tabella con le colonne ID fornitore, AAA, BBB e CCC. Inoltre, inserisci pochi valori.
CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) VAI
Produzione:
ID fornitore | AAA | BBB | CCC |
uno | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | uno | 7 |
Ora, diciamo, vogliamo rimuovere il perno della tabella. Per farlo, puoi fare riferimento al seguente codice:
SELECT SupplierID, Customers, Products FROM (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Products FOR Customers IN (AAA, BBB, CCC)) AS example GO
ID fornitore | Clienti | Prodotti |
uno | AAA | 3 |
uno | BBB | 5 |
uno | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 | BBB | uno |
3 | CCC | 7 |
È così che puoi utilizzare SQL PIVOT e UNPIVOT. Con questo, arriviamo alla fine di questo articolo. Spero tu abbia capito come usare SQL. Se desideri saperne di più su MySQL e conosci questo database relazionale open source, quindi dai un'occhiata al nostro che viene fornito con formazione dal vivo con istruttore e esperienza di progetto nella vita reale. Questa formazione ti aiuterà a comprendere MySQL in profondità e ti aiuterà a ottenere la padronanza dell'argomento.
Hai domande per noi? Per favore menzionalo nella sezione commenti di questo articolo su SQL Pivot e ti ricontatterò.