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 |