SQL Server: PIVOT-sats


Exempel

PIVOT-satsen kan användas i SQL Server (Transact-SQL).

Låt oss titta på ett exempel. Om vi hade en anställdstabell som innehöll följande data:

anställd_nummer efternamn förnamn 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 Portar Steve 65000 30

Och vi körde följande SQL-uttalande som skapar en kors-tabell vid fråga med PIVOT-satsen:

Det skulle ge följande resultat:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Detta exempel skulle skapa en pivottabell för att visa den totala lönen för dept_id 30 och dept_id 45. Resultaten visas i en rad med de två avdelningarna som visas var och en i sin egen kolumn.

Låt oss nu bryta sönder PIVOT-klausulen och förklara hur den fungerade.

Ange kolumner i resultat för tvärtabeller

Först vill vi ange vilka fält som ska inkluderas i våra korstabellresultat. I det här exemplet vill vi inkludera det bokstavliga värdet ”TotalSalary” som den första kolumnen i pivottabellen. Och vi vill skapa en kolumn för dept_id 30 och en andra kolumn för dept_id 45. Detta ger oss 3 kolumner i vår pivottabell.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Ange källan Tabelldata

Därefter måste vi ange ett SELECT-uttalande som returnerar källdata för pivottabellen.

I det här exemplet vill vi returnera värdena dept_id och lön från tabellen medarbetare:

(SELECT dept_id, salary FROM employees) AS SourceTable

Du måste ange ett alias för källfrågan. I det här exemplet har vi aliaserat frågan som SourceTable.

Ange aggregatfunktion

Därefter måste vi ange vilken sammansatt funktion som ska användas när vi skapar vår tvärtabellfråga. Du kan använda alla aggregat som SUM, COUNT, MIN, MAX eller AVG-funktioner.

I det här exemplet ska vi använda SUM-funktionen. Detta kommer att summera lönevärdena:

PIVOT(SUM(salary)

Ange pivotvärden

Slutligen måste vi ange vilka pivotvärden som ska inkluderas i våra resultat . Dessa kommer att användas som kolumnrubriker i vår tvärtabellfråga.

I det här exemplet kommer vi bara att returnera dept_id-värdena 30 och 45. Dessa värden blir våra kolumnrubriker i vårt led tabell. Observera också att dessa värden är en begränsad lista över dept_id-värdena och inte nödvändigtvis innehåller alla möjliga värden.

FOR dept_id IN (, )

Nu när vi sätter ihop allt, vi får följande pivottabell:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *