SQL Server PIVOT (Dansk)

Oversigt: i denne vejledning lærer du, hvordan du bruger SQL Server PIVOT -operatøren for at konvertere rækker til kolonner.

Opsætning af mål

Til demonstrationen bruger vi production.products og production.categories tabeller fra eksempeldatabasen:

Følgende forespørgsel finder antallet af produkter for hver produktkategori:

Her er output:

Vores mål er at gøre kategorienavnene fra den første kolonne i output til flere kolonner og tælle antallet af produkter for hver kategorienavn som følgende billede:

Derudover kan vi tilføje modelåret for at gruppere kategorien ory efter modelår som vist i følgende output:

Introduktion til SQL Server PIVOT-operatør

SQL Server PIVOT -operator roterer et tabelværdiansat udtryk. Det omdanner de unikke værdier i en kolonne til flere kolonner i output og udfører sammenlægninger af eventuelle resterende kolonneværdier.

Du følger disse trin for at gøre en forespørgsel til en pivottabel:

  • Vælg først et basesæt til drejning.
  • For det andet skal du oprette et midlertidigt resultat ved hjælp af en afledt tabel eller et fælles tabeludtryk (CTE)
  • For det tredje skal du anvende PIVOT operator.

Lad os anvende disse trin i det følgende eksempel.

Vælg først kategorienavn og produkt-id fra production.products og production.categories tabeller som basisdata til drejning:

For det andet skal du oprette et midlertidigt resultatsæt ved hjælp af en afledt tabel:

For det tredje skal du anvende PIVOT operatoren:

Denne forespørgsel genererer følgende output:

Nu, enhver ekstra kolonne, som du føjer til listen over forespørgsler, der returnerer grundlag data vil automatisk danne række grupper i pivottabellen. For eksempel kan du tilføje modelårskolonnen til ovenstående forespørgsel:

Her er output:

Generering af kolonneværdier

I ovenstående forespørgsel var du nødt til at skrive hvert kategorienavn i parentes efter IN operatør manuelt. For at undgå dette kan du bruge funktionen QUOTENAME() til at generere listen over kategorinavne og kopiere dem over forespørgslen.

Generér først kategorienavnelisten:

Outputtet ser sådan ud:

I dette uddrag:

  • Funktionen QUOTENAME() kategorienavn med firkantede parenteser, fx
  • Funktionen LEFT() fjerner det sidste komma fra @column-strengen .

For det andet skal du kopiere listen over kategorinavne fra output og indsætte den i forespørgslen.

Dynamiske pivottabeller

Hvis du tilføjer en nyt kategorinavn til production.categories -tabellen, skal du omskrive din forespørgsel, hvilket ikke er ideelt. For at undgå at gøre dette kan du bruge dynamisk SQL til at gøre pivottabellen dynamisk.

I denne forespørgsel i stedet for at videregive en fast liste over kategorienavne til PIVOT operator, vi konstruerer listen over kategorinavne og sender den til en SQL-sætning og udfører derefter denne sætning dynamisk ved hjælp af den lagrede procedure sp_executesql.

I denne vejledning , du har lært, hvordan du bruger SQL Server PIVOT -tabellen til at konvertere rækker til kolonner.

Skriv et svar

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