SQL Server: PIVOT-clausule


Voorbeeld

De PIVOT-clausule kan worden gebruikt in SQL Server (Transact-SQL).

Laten we eens kijken een voorbeeld. Als we een werknemerstabel hadden die de volgende gegevens bevatte:

medewerker_nummer achternaam voornaam salaris dienst_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

En we hebben de volgende SQL-instructie uitgevoerd die een kruistabel creëert op query met behulp van de PIVOT-clausule:

Het zou het volgende resultaat opleveren:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

In dit voorbeeld zou een draaitabel worden gemaakt om het totale salaris voor afdeling_id 30 en afdeling_id 45 weer te geven. De resultaten worden in één rij weergegeven, waarbij de twee afdelingen verschijnen elk in hun eigen kolom.

Laten we nu de PIVOT-clausule uit elkaar halen en uitleggen hoe het werkte.

Specificeer kolommen in kruistabelresultaten

Ten eerste willen we specificeren welke velden in onze kruistabelresultaten moeten worden opgenomen. In dit voorbeeld willen we de letterlijke waarde “TotalSalary” opnemen als de eerste kolom in de draaitabel. En we willen een kolom maken voor afd_id 30 en een tweede kolom voor afd_id 45. Dit geeft ons 3 kolommen in onze draaitabel.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Specificeer de bron Tabelgegevens

Vervolgens moeten we een SELECT-instructie specificeren die de brongegevens voor de draaitabel retourneert.

In dit voorbeeld willen we de afdelings-id en salariswaarden retourneren van de werknemerstabel:

(SELECT dept_id, salary FROM employees) AS SourceTable

Je moet een alias specificeren voor de bronquery. In dit voorbeeld hebben we de query als SourceTable gealiast.

Specify Aggregate Function

Vervolgens moeten we specificeren welke aggregatiefunctie moet worden gebruikt bij het maken van onze kruistabelquery. U kunt elk aggregaat gebruiken, zoals SUM-, COUNT-, MIN-, MAX- of AVG-functies.

In dit voorbeeld gaan we de SUM-functie gebruiken. Dit zal de salariswaarden optellen:

PIVOT(SUM(salary)

Specificeer spilwaarden

Ten slotte moeten we specificeren welke spilwaarden in onze resultaten moeten worden opgenomen . Deze worden gebruikt als kolomkoppen in onze kruistabelquery.

In dit voorbeeld retourneren we alleen de afd_id-waarden van 30 en 45. Deze waarden worden onze kolomkoppen in ons draaipunt tafel. Merk ook op dat deze waarden een eindige lijst zijn van de afdelings-id-waarden en niet noodzakelijk alle mogelijke waarden zullen bevatten.

FOR dept_id IN (, )

Als we het nu allemaal samenvoegen, we krijgen de volgende draaitabel:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *