Eksempel
PIVOT-klausulen kan bruges i SQL Server (Transact-SQL).
Lad os se på et eksempel. Hvis vi havde en medarbejdertabel, der indeholdt følgende data:
medarbejdernummer | efternavn | first_name | løn | dept_id |
---|---|---|---|---|
12009 | Sutherland | Barbara | 54000 | 45 |
34974 | Yates | Fred | 80000 | 45 |
34987 | Erickson | Neil | 42000 | 45 |
45001 | Parker | Sally | 57500 | 30 |
75623 | Porte | Steve | 65000 | 30 |
Og vi kørte følgende SQL-sætning, som skaber en krydstabel ved forespørgsel ved hjælp af PIVOT-klausulen:
Det ville returnere følgende resultat:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |
Dette eksempel opretter en pivottabel, der viser den samlede løn for dept_id 30 og dept_id 45. Resultaterne vises i en række, hvor de to afdelinger vises hver i deres egen kolonne.
Lad os nu opdele PIVOT-klausulen og forklare, hvordan den fungerede.
Angiv kolonner i resultater på tværs af tabeller
Først vil vi specificere, hvilke felter der skal medtages i vores krydstabuleringsresultater. I dette eksempel vil vi medtage den bogstavelige værdi “TotalSalary” som den første kolonne i pivottabellen. Og vi vil oprette en kolonne til dept_id 30 og en anden kolonne til dept_id 45. Dette giver os 3 kolonner i vores pivottabel.
SELECT "TotalSalary" AS TotalSalaryByDept, ,
Angiv kilden Tabeldata
Derefter skal vi specificere en SELECT-sætning, der returnerer kildedataene til pivottabellen.
I dette eksempel vil vi returnere dept_id og lønværdier fra medarbejdertabellen:
(SELECT dept_id, salary FROM employees) AS SourceTable
Du skal angive et alias til kildeforespørgslen. I dette eksempel har vi aliaset forespørgslen som SourceTable.
Angiv samlet funktion
Herefter skal vi specificere, hvilken samlet funktion der skal bruges, når vi opretter vores tværforespørgsel. Du kan bruge ethvert aggregat, såsom SUM-, COUNT-, MIN-, MAX- eller AVG-funktioner.
I dette eksempel skal vi bruge SUM-funktionen. Dette vil opsummere lønværdierne:
PIVOT(SUM(salary)
Angiv pivotværdier
Endelig skal vi specificere, hvilke pivotværdier der skal medtages i vores resultater . Disse vil blive brugt som kolonneoverskrifter i vores forespørgsel på tværs af tabeller.
I dette eksempel vil vi kun returnere dept_id-værdierne på 30 og 45. Disse værdier bliver vores kolonneoverskrifter i vores drejning bord. Bemærk også, at disse værdier er en endelig liste over dept_id-værdierne og ikke nødvendigvis indeholder alle mulige værdier.
FOR dept_id IN (, )
Nu når vi sætter det hele sammen, vi får følgende pivottabel:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |