SQL Server: clausola PIVOT


Esempio

La clausola PIVOT può essere utilizzata in SQL Server (Transact-SQL).

Diamo un’occhiata a un esempio. Se disponessimo di una tabella dei dipendenti che conteneva i seguenti dati:

dipendente_number last_name first_name stipendio dept_id
12009 Sutherland Barbara 54000 45
34974 Yates Fred 80000 45
34987 Erickson Neil 42000 45
45001 Parker Sally 57500 30
75623 Gates Steve 65000 30

E abbiamo eseguito la seguente istruzione SQL che crea una tabulazione incrociata su query utilizzando la clausola PIVOT:

restituirà il seguente risultato:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Questo esempio creerebbe una tabella pivot per visualizzare lo stipendio totale per dept_id 30 e dept_id 45. I risultati vengono visualizzati in una riga con i due reparti visualizzati ciascuno nella propria colonna.

Ora, suddividiamo la clausola PIVOT e spieghiamo come ha funzionato.

Specifica le colonne nei risultati della tabulazione incrociata

Innanzitutto, vogliamo specificare quali campi includere nei risultati della tabulazione incrociata. In questo esempio, vogliamo includere il valore letterale “TotalSalary” come prima colonna nella tabella pivot. E vogliamo creare una colonna per dept_id 30 e una seconda colonna per dept_id 45. Questo ci dà 3 colonne nella nostra tabella pivot.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Specifica l’origine Dati tabella

Successivamente, dobbiamo specificare un’istruzione SELECT che restituirà i dati di origine per la tabella pivot.

In questo esempio, vogliamo restituire i valori dept_id e salary da la tabella dei dipendenti:

(SELECT dept_id, salary FROM employees) AS SourceTable

Devi specificare un alias per la query di origine. In questo esempio, abbiamo alias la query come SourceTable.

Specifica la funzione di aggregazione

Successivamente, dobbiamo specificare quale funzione di aggregazione utilizzare durante la creazione della nostra query a campi incrociati. Puoi utilizzare qualsiasi aggregato come le funzioni SUM, COUNT, MIN, MAX o AVG.

In questo esempio, utilizzeremo la funzione SUM. Questo sommerà i valori di stipendio:

PIVOT(SUM(salary)

Specifica i valori pivot

Infine, dobbiamo specificare quali valori pivot includere nei nostri risultati . Questi verranno utilizzati come intestazioni di colonna nella nostra query di tabulazione incrociata.

In questo esempio, restituiremo solo i valori dept_id di 30 e 45. Questi valori diventeranno le nostre intestazioni di colonna nel nostro pivot tavolo. Inoltre, tieni presente che questi valori sono un elenco finito dei valori dept_id e non conterranno necessariamente tutti i valori possibili.

FOR dept_id IN (, )

Ora, quando mettiamo tutto insieme, otteniamo la seguente tabella pivot:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *