SQL Server: PIVOT-záradék


Példa

A PIVOT-záradék használható az SQL Server-ben (Transact-SQL).

Nézzük meg egy példa. Ha volt egy alkalmazottak táblája, amely a következő adatokat tartalmazta:

alkalmazott_száma vezetéknév keresztnév fizetés osztály_id
12009 Sutherland Barbara 54000 45
34974 Yates Fred 80000 45
34987 Erickson Neil 42000 45
45001 Parker Sally 57500 30
75623 Kapuk Steve 65000 30

És lefuttattuk a következő SQL utasítást, amely kereszttáblákat hoz létre a PIVOT záradékot használó lekérdezésnél:

A következő eredményt adja vissza:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Ez a példa létrehoz egy forgatótáblát a dept_id 30 és a dept_id 45 teljes fizetésének megjelenítésére. Az eredmények egy sorban jelennek meg a két részleg megjelenésével mindegyik a saját oszlopában.

Most bontsuk szét a PIVOT záradékot, és magyarázza el, hogyan működött.

Oszlopok megadása a táblázatok közötti eredményekben

Először meg akarjuk határozni, hogy milyen mezőket vegyen fel a kereszttáblázási eredményeinkbe. Ebben a példában a “TotalSalary” szó szerinti értéket szeretnénk felvenni a kimutatás első oszlopaként. És szeretnénk létrehozni egy oszlopot a dept_id 30 és egy második oszlopot a dept_id 45 számára. Ezzel 3 oszlopot kapunk az elforduló táblázatunkból.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Adja meg a forrást Táblázatadatok

Ezután meg kell adnunk egy SELECT utasítást, amely visszaadja a kimutatási táblázat forrásadatait.

Ebben a példában a dept_id és a fizetési értékeket szeretnénk visszaadni az alkalmazottak tábla:

(SELECT dept_id, salary FROM employees) AS SourceTable

A forrás lekérdezéshez meg kell adni egy álnevet. Ebben a példában a lekérdezést SourceTable névnek neveztük el.

Adja meg az összesített függvényt

Ezután meg kell adnunk, hogy milyen összesítő függvényt használjon a táblázatok közötti lekérdezés létrehozásakor. Bármilyen összesítést használhat, például SUM, COUNT, MIN, MAX vagy AVG függvényeket.

Ebben a példában a SUM függvényt fogjuk használni. Ez összegzi a fizetés értékeit:

PIVOT(SUM(salary)

Adja meg a kimutatási értékeket

Végül meg kell határoznunk, hogy mely pivot értékeket vegye fel az eredményeinkbe . Ezeket fogjuk használni oszlopfejlécként kereszttáblázási lekérdezésünkben.

Ebben a példában csak a 30 és 45 dept_id értékeket adjuk vissza. Ezek az értékek oszlopfejlécekké válnak a pivot-ban. asztal. Ezenkívül vegye figyelembe, hogy ezek az értékek a dept_id értékek véges listáját jelentik, és nem feltétlenül tartalmazzák az összes lehetséges értéket.

FOR dept_id IN (, )

Most, amikor mindezt összeállítjuk, a következő pivot táblázatot kapjuk:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük