SQL Server PIVOT (Magyar)

Ö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.

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