További
Sorok hatékony átalakítása oszlopokká az sql szerverben
I'm keres egy hatékony módja annak, hogy sorokat oszlopokká konvertáljon az SQL szerverben, hallottam, hogy a PIVOT nem túl gyors, és sok rekordot kell kezelnem.
Ez az én példám:
-------------------------------
| Id | Value | ColumnName |
-------------------------------
| 1 | John | FirstName |
| 2 | 2.4 | Amount |
| 3 | ZH1E4A | PostalCode |
| 4 | Fork | LastName |
| 5 | 857685 | AccountNumber |
-------------------------------
Ez az én eredményem:
---------------------------------------------------------------------
| FirstName |Amount| PostalCode | LastName | AccountNumber |
---------------------------------------------------------------------
| John | 2.4 | ZH1E4A | Fork | 857685 |
---------------------------------------------------------------------
Hogyan tudom felépíteni az eredményt?
358
2
Többféleképpen alakíthatja át az adatokat több sorból oszlopokká.
A
PIVOT
használatávalAz SQL Serverben a
PIVOT
függvényt használhatjuk az adatok sorokból oszlopokká történő átalakítására:Lásd Demo.
Pivot ismeretlen számú
oszlopnévvel
Ha ismeretlen számú
columnnames
van, amit át akarsz fordítani, akkor használhatod a dinamikus SQL-t:Lásd Demo.
Összesítő függvény használata
Ha nem szeretné használni a
PIVOT
függvényt, akkor használhat egy aggregáló függvényt egyCASE
kifejezéssel:Lásd Demo.
Többszörös kötés használata
Ezt a feladatot többszörös összekapcsolással is el lehet végezni, de akkor szükség lesz néhány oszlopra az egyes sorok összekapcsolásához, amelyek nem szerepelnek a mintaadatokban. De az alapvető szintaxis a következő lenne:
mivel a pivoting adatok még mindig egy forró úgy döntöttem, hogy adjunk hozzá valamit nekem. Ez inkább egy módszer, mint egyetlen szkript, de sokkal több lehetőséget ad. Először is 3 szkriptet kell telepíteni:
ColumnActionList
] -> az adatokat paraméterként tartja.proc_PivotPrepare
] -> előkészíti az adatainkat.proc_PivotExecute
] -> végrehajtja a szkriptet.