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 |