PIVOT sa promjenljivim brojem kolona – dinamički pivot

Objavljeno: 06-05-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL

Ознаке:

1

Relacioni operator PIVOT u T-SQL-u se koristi za rotiranje tabele, tako što jedinstvene vrijednosti kolone transformiše u toliki broj kolona, pri čemu obavlja potrebne agregacije nad vrijednostima preostalih kolona. Jednostavnije rečeno, prevodi vertikalno orjentisanu tabelu u horizontalno orjentisanu tj. sa nivoa redova prelazi se na nivo kolona.
Često je skup vrijednosti kolone od koje kreiramo nove kolone konačan (ili želimo da prikažemo samo određene vrijednosti) i tada se, za taj skup, koristi PIVOT za predefinisani skup kolona.

Nekada je skup vrijednosti kolone koju želimo da pivotiramo po svim vrijednostima promljenljiv i tada se koristi dinamički pivot.

Primjer: Nad SQL Kefalo bazom kreirati upit koji kao rezultat daje broj epizoda za svaki crtać, po svim godinama u kojima su epizode proizvedene. Godine proizvodnje prikazati kao kolone.
Pošto je spisak godina proizvodnje promjenljiv, prvi korak je da se kreira taj spisak, koji će predstavljati spisak kolona u PIVOT-u. Ova konkatenacija stringa može da se uradi na više načina, kao što je opisano u prethodnim člancima:

Konkatenacija string vrednosti iz razlicitih redova (1. deo)
Konkatenacija string vrednosti iz razlicitih redova (2. deo)

Koristićemo primjer sa FOR XML PATH i STUFF funkcijom: