logo

Pivot e Unpivot in SQL

In SQL, Pivot e Unpivot sono operatori relazionali utilizzati per trasformare una tabella in un'altra per ottenere una visualizzazione più semplice della tabella. Convenzionalmente possiamo dire così Perno L'operatore converte i dati delle righe della tabella nei dati della colonna. IL Non ruotare L'operatore fa il contrario, ovvero trasforma i dati basati su colonne in righe.

Sintassi:

1. Perno:



 SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>

2. Non ruotare:

 SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>

Esempio 1:
Abbiamo creato una semplice tabella denominata geeksforgeeks con valori come Nome del corso, categoria del corso e prezzo e inserito i rispettivi valori.

 Create Table geeksforgeeks ( CourseName nvarchar(50), CourseCategory nvarchar(50), Price int ) Insert into geeksforgeeks values('C', 'PROGRAMMING', 5000) Insert into geeksforgeeks values('JAVA', 'PROGRAMMING', 6000) Insert into geeksforgeeks values('PYTHON', 'PROGRAMMING', 8000) Insert into geeksforgeeks values('PLACEMENT 100', 'INTERVIEWPREPARATION', 5000) SELECT * FROM geeksforgeeks>

L'output che otteniamo è:

Nome del corso Categoria del corso Prezzo
C PROGRAMMAZIONE 5000
GIAVA PROGRAMMAZIONE 6000
PITONE PROGRAMMAZIONE 8000
POSIZIONE 100 PREPARAZIONE AL COLLOQUIO 5000

Ora, candidatura PERNO operatore a questi dati:

 SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>

Dopo aver utilizzato l'operatore Pivot otteniamo il seguente risultato:

Nome del corso PROGRAMMAZIONE Preparazione al colloquio
C 5000 NULLO
GIAVA 6000 NULLO
POSIZIONE 100 NULLO 5000
PITONE 8000 NULLO

Esempio-2:
Ora utilizziamo la stessa tabella geeksforgeeks creata nell'esempio precedente e applichiamo l'operatore Unpivot alla nostra tabella pivot.

Applicazione IMPOSSIBILE operatore:

 SELECT CourseName, CourseCategory, Price FROM ( SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS PivotTable ) P UNPIVOT ( Price FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS UnpivotTable>

Dopo aver utilizzato l'operatore Unpivot, riprendiamo la nostra tabella originale poiché abbiamo trasformato con successo le colonne della tabella in righe:

Nome del corso Categoria del corso Prezzo
C PROGRAMMAZIONE 5000
GIAVA PROGRAMMAZIONE 6000
POSIZIONE 100 PREPARAZIONE AL COLLOQUIO 5000
PITONE PROGRAMMAZIONE 8000