FROM – a PIVOT és az UNPIVOT használata

  • 2019.10.14.
  • 5 perc olvasási idő
    • V
    • c
    • M
    • i
    • M
    • +7

A következőre vonatkozik: SQL Server (az összes támogatott verzió) Azure SQL Database Azure SQL felügyelt példány Azure Synapse Analytics Párhuzamos adattárház

Használhatja a PIVOT és UNPIVOT relációs operátorokat a egy táblázat által értékelt kifejezést módosítson egy másik táblára. A PIVOT táblázatértékű kifejezést forgat azáltal, hogy a kifejezés egyik oszlopának egyedi értékeit a kimenet több oszlopává alakítja. És a PIVOT összesítéseket futtat, ahol szükségesek a hátralévő oszlopértékek, amelyekre a végső kimenetben szükség van. a PIVOT-hoz úgy, hogy egy táblázat által értékelt kifejezés oszlopait oszlopértékekké forgatja.

A PIVOT szintaxisa egyszerűbb és olvashatóbb, mint az egyébként esetlegesen használt szintaxis. a SELECT...CASE utasítások összetett sorozatában van megadva. A PIVOT szintaxisának teljes leírását lásd: FROM (Transact-SQL).

Szintaxis

A következő szintaxis összefoglalja a PIVOT operátor használatát.

Megjegyzések

Az UNPIVOT záradék oszlopazonosítói követik a katalógus összeállítását. Az SQL Database esetében a leválogatás mindig SQL_Latin1_General_CP1_CI_AS. SQL Server esetén részben adatbázisok esetén az összevonás mindig Latin1_General_100_CI_AS_KS_WS_SC. Ha az oszlop kombinált ed más oszlopokkal, akkor az ütközések elkerülése érdekében egy leválási záradék (COLLATE DATABASE_DEFAULT) szükséges.

Alapvető PIVOT példa

A következő kódpélda két oszlopos táblázatot készít, amelynek négy sora van.

Itt található az eredménykészlet.

Három termékkel nincs megadva DaysToManufacture.

A következő kód ugyanazt az eredményt mutatja, elfordítva, hogy a DaysToManufacture értékek oszlopfejlécekké válnak. Három napra oszlopot adunk meg, annak ellenére, hogy az eredmények NULL.

Íme az eredménykészlet .

Komplex PIVOT példa

Gyakori forgatókönyv, ahol a PIVOT hasznos lehet amikor táblázatok közötti áttekintést szeretne készíteni az adatok összefoglalása érdekében. Tegyük fel például, hogy az PurchaseOrderHeader táblázatot szeretné lekérdezni az AdventureWorks2014 minta adatbázisban az egyes alkalmazottak által leadott megrendelések számának meghatározásához. A következő lekérdezés biztosítja ezt a jelentést, szállító által rendezve.

Itt van egy részleges eredménykészlet.

Az ezen alszelektum által visszaadott eredmények utasítás el van forgatva a EmployeeID oszlopban.

A oszlop mezővé válik a végső eredményhalmazban. Mint ilyen, van egy oszlop az egyes kimutatásban megadott EmployeeID számokhoz: ebben az esetben az alkalmazottak 250, 251, 256, 257 és 260. A PurchaseOrderID oszlop értékoszlopként szolgál, amelyhez a végső kimenetben visszaadott oszlopokat csoportosító oszlopoknak nevezzük. Ebben az esetben a csoportosító oszlopokat a COUNT függvény. Figyelje meg, hogy megjelenik egy figyelmeztető üzenet, amely jelzi, hogy a PurchaseOrderID oszlopban megjelenő semmilyen nullértéket nem vették figyelembe a COUNT minden alkalmazottnál.

Fontos

Ha összesített függvényeket használnak a PIVOT , az értékoszlopban semmilyen nullérték jelenlétét nem vesszük figyelembe az összesítés kiszámításakor.

UNPIVOT példa

UNPIVOT az PIVOT szinte fordított műveletét hajtja végre, az oszlopok sorokba forgatásával. Tegyük fel, hogy az előző példában előállított tábla pvt néven van tárolva az adatbázisban, és el akarja forgatni az oszlopazonosítókat Emp1, Emp2, Emp3, Emp4 és Emp5 sorértékekbe, amelyek egy adott szállítónak felelnek meg. Mint ilyen, meg kell jelölnie két további oszlopot.Az az oszlop, amely tartalmazza az Ön által forgatott oszlopértékeket (Emp1, Emp2, …), a következő neve lesz: div div = “e1a1fdc54a”>

, és azt az oszlopot, amely megtartja az elforgatott oszlopok alatt jelenleg létező értékeket, Orders -nek hívjuk. Ezek az oszlopok megegyeznek a pivot_column és az value_column értékekkel , illetve a Transact-SQL definícióban. Itt van a lekérdezés.

Itt van egy részleges eredménykészlet.

Vegye figyelembe, hogy A UNPIVOT nem a PIVOT pontos fordítottja. A PIVOT összesítést hajt végre, és a lehetséges több sort egyesíti a kimenet egyetlen sorába. A UNPIVOT nem reprodukálja az eredeti táblázatértékű kifejezés eredményt, mert a sorok összevonásra kerültek. A UNPIVOT bemenet null értékei is eltűnnek Amikor az értékek eltűnnek, az azt mutatja, hogy a bemenetben lehetnek eredeti null értékek a PIVOT művelet előtt.

A Sales.vSalesPersonSalesByFiscalYears nézet az AdventureWorks2012 mintaadatbázisban a PIVOT felhasználással adja vissza az értékesítők összes értékesítését minden pénzügyi évben. A nézet parancsfájlba írása az SQL Server Management Studio alkalmazásban , keresse meg az Objektumkezelőben a nézetet az AdventureWorks2012 adatbázis Nézetek mappájában. Kattintson a jobb gombbal a nézet nevére, majd válassza a Szkript nézet parancsot.

Lásd még

FROM (Transact -SQL)
ESET (Transact-SQL)

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