SQL Server: Clauza PIVOT


Exemplu

Clauza PIVOT poate fi utilizată în SQL Server (Transact-SQL).

Să vedem un exemplu. Dacă am avea un tabel al angajaților care conține următoarele date:

numărul_unui
prenumele prenumele salariu 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

Și am rulat următoarea instrucțiune SQL care creează un tabulat încrucișat la interogare folosind clauza PIVOT:

Ar returna următorul rezultat:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Acest exemplu ar crea un tabel pivot pentru a afișa salariul total pentru dept_id 30 și dept_id 45. Rezultatele sunt afișate într-un rând, cele două departamente apar fiecare în propria coloană.

Acum, să separăm clauza PIVOT și să explicăm cum a funcționat.

Specificați coloane în rezultatele tabelelor încrucișate

Mai întâi, dorim să specificăm ce câmpuri să includem în rezultatele noastre de tabelare încrucișată. În acest exemplu, dorim să includem valoarea literală „TotalSalary” ca prima coloană din tabelul pivot. Și dorim să creăm o coloană pentru dept_id 30 și o a doua coloană pentru dept_id 45. Aceasta ne oferă 3 coloane în tabelul nostru pivot.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Specificați sursa Date tabelă

În continuare, trebuie să specificăm o declarație SELECT care să returneze datele sursă pentru tabelul pivot.

În acest exemplu, dorim să returnăm valorile dept_id și salariul din tabelul angajaților:

(SELECT dept_id, salary FROM employees) AS SourceTable

Trebuie să specificați un alias pentru interogarea sursă. În acest exemplu, am aliasat interogarea ca SourceTable.

Specificați funcția agregată

Apoi, trebuie să specificăm ce funcție agregată să utilizați atunci când ne creați interogarea de tabelare încrucișată. Puteți utiliza orice agregat, cum ar fi funcțiile SUM, COUNT, MIN, MAX sau AVG.

În acest exemplu, vom folosi funcția SUM. Aceasta va însuma valorile salariului:

PIVOT(SUM(salary)

Specificați valorile pivot

În cele din urmă, trebuie să specificăm ce valori pivot să includem în rezultatele noastre . Acestea vor fi utilizate ca titluri de coloană în interogarea noastră de tabele încrucișate.

În acest exemplu, vom returna doar valorile dept_id de 30 și 45. Aceste valori vor deveni titlurile noastre de coloană din pivotul nostru masa. De asemenea, rețineți că aceste valori sunt o listă finită a valorilor dept_id și nu vor conține neapărat toate valorile posibile.

FOR dept_id IN (, )

Acum, când le punem pe toate, obținem următorul tabel pivot:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *