Mere
Konverter effektivt rækker til kolonner i sql server
Jeg leder efter en effektiv måde at konvertere rækker til kolonner i SQL server, jeg har hørt at PIVOT ikke er særlig hurtig, og jeg skal håndtere mange poster.
Dette er mit eksempel:
-------------------------------
| Id | Value | ColumnName |
-------------------------------
| 1 | John | FirstName |
| 2 | 2.4 | Amount |
| 3 | ZH1E4A | PostalCode |
| 4 | Fork | LastName |
| 5 | 857685 | AccountNumber |
-------------------------------
Dette er mit resultat:
---------------------------------------------------------------------
| FirstName |Amount| PostalCode | LastName | AccountNumber |
---------------------------------------------------------------------
| John | 2.4 | ZH1E4A | Fork | 857685 |
---------------------------------------------------------------------
Hvordan kan jeg opbygge resultatet?
358
2
Der er flere måder, hvorpå du kan omdanne data fra flere rækker til kolonner.
Brug af
PIVOT
I SQL Server kan du bruge funktionen
PIVOT
til at omdanne data fra rækker til kolonner:Se Demo.
Pivot med ukendt antal
columnnames
Hvis du har et ukendt antal
columnnames
, som du ønsker at transponere, kan du bruge dynamisk SQL:Se Demo.
Brug af en aggregeret funktion
Hvis du ikke ønsker at bruge funktionen
PIVOT
, kan du bruge en aggregeringsfunktion med etCASE
-tryk:Se Demo.
Brug af flere sammenføjninger
Dette kan også gøres ved hjælp af multiple joins, men du skal bruge en kolonne til at knytte hver enkelt række til, hvilket du ikke har i dine eksempeldata. Men den grundlæggende syntaks ville være:
da pivoting data er stadig en hot one besluttede jeg at tilføje noget form mig. Dette er snarere en metode end bare et enkelt script, men giver dig langt flere muligheder. Først og fremmest Der er 3 scripts du skal implementere:
ColumnActionList
] -> indeholder data som parameterproc_PivotPrepare
] -> forbereder vores dataproc_PivotExecute
] -> udfører scriptet