SQL Server: PIVOT-klausul


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

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *