Összefoglaló: ebben az oktatóanyagban megtanulhatja az SQL Server PIVOT
operátor használatát sorok oszlopokká alakításához.
A célok beállítása
A bemutatáshoz a production.products
és táblák a minta adatbázisból:
A következő lekérdezés megtalálja az egyes termékkategóriákhoz tartozó termékek számát:
Íme a kimenet:
Célunk, hogy a kimenet első oszlopának kategóriáit több oszlopba állítsuk, és megszámoljuk az egyes termékek számát kategória neve a következő képként:
Ezen felül felvehetjük a modellévet a kategória csoportosítására ory modellév szerint, a következő kimenet szerint:
Bevezetés az SQL Server PIVOT operátorába
Az SQL Server PIVOT
operátor táblaértékű kifejezést forgat. Egy oszlop egyedi értékeit több oszlopká alakítja a kimenetben, és összesíti az összes fennmaradó oszlopértéket.
Az alábbi lépéseket követi a lekérdezés kimutatásához:
- Először válasszon ki egy alapadatkészletet a forgatáshoz.
- Másodszor, hozzon létre egy ideiglenes eredményt egy származtatott tábla vagy közös tábla kifejezés (CTE) használatával.
- Harmadszor alkalmazza a
PIVOT
operátor.
Alkalmazzuk ezeket a lépéseket a következő példában.
Először válassza ki a kategória nevét és a termék azonosítóját a production.products
és production.categories
táblázatok a kimutatás alapadataként:
Másodszor hozzon létre egy ideiglenes eredménykészletet egy levezetett táblázat segítségével:
Harmadszor alkalmazza a PIVOT
operátort:
Ez a lekérdezés a következő kimenetet generálja:
Most minden további oszlop, amelyet hozzáad a lekérdezés kiválasztási listájához, amely visszaadja a bázis az adatok automatikusan sorcsoportokat képeznek az elforduló táblázatban. Például felveheti a modellév oszlopot a fenti lekérdezéshez:
Itt van a kimenet:
Oszlopértékek generálása
A fenti lekérdezésben minden kategória nevét be kellett írni a zárójelbe a IN
kezelő manuálisan. Ennek elkerülése érdekében a QUOTENAME()
függvény segítségével létrehozhatja a kategória névlistáját és átmásolja őket a lekérdezésre.
Először hozza létre a kategória névlistáját:
A kimenet így fog kinézni:
Ebben a részletben:
- A
QUOTENAME()
függvény beburkolja a kategória neve szögletes zárójelben, pl. - A
LEFT()
függvény eltávolítja az utolsó vesszőt a @columns karakterláncból .
Másodszor másolja a kategória névlistáját a kimenetből, és illessze be a lekérdezésbe.
Dinamikus kimutató táblák
Ha hozzáad egy új kategória neve a production.categories
táblához, át kell írnia a lekérdezést, ami nem ideális. Ennek elkerülése érdekében a dinamikus SQL segítségével dinamikussá teheti a kimutatástáblát.
Ebben a lekérdezésben a kategórianevek fix listájának továbbítása helyett a PIVOT
operátor, elkészítjük a kategória névlistáját és átadjuk egy SQL utasításnak, majd dinamikusan végrehajtjuk ezt az utasítást a tárolt sp_executesql
eljárás segítségével.
Ebben az oktatóanyagban , megtanulta, hogyan kell használni az SQL Server PIVOT
táblázatot a sorok oszlopokká alakításához.