Relációs hatalmas mennyiségű adatot tároljon táblázatok formájában. Ezek a táblák tetszőleges számú sort és oszlopot tartalmazhatnak. De mi lenne, ha a sorszintű adatokat oszlopos adatokra kellene változtatnia? Nos, ebben a cikkben az SQL Pivotról megmutatom, hogyan lehet konvertálni a sorokat oszlopká az SQL Serverben.
válasszon c ++ -t
A cikk a következő témákkal foglalkozik:
Mi az a PIVOT az SQL-ben?
A PIVOT a táblaérték forgatására szolgál, egyetlen oszlop egyedi értékeinek több oszlopra konvertálásával. Arra használják, hogy a sorokat oszlopértékekre forgassák, és szükség esetén összesítéseket futtasson a fennmaradó oszlopértékeken.
Az UNPIVOT-ot viszont ellenkező műveletek végrehajtására használják. Tehát egy adott tábla oszlopainak oszlopértékekké konvertálására szolgál.
Ebben a cikkben folytatva értsük meg az SQL Pivot szintaxisát.
Szintaxis:
SELECT nem csuklós oszlopnév, [első elfordított oszlopnév] AS oszlopnév, [második elforgatott oszlopnév] AS oszlopnév, [harmadik elforgatott oszlopnév] AS oszlopnév, ... [utolsó elforgatott oszlopnév] AS oszlopnév FROM (SELECT lekérdezés, amely az adatokat előállítja) AS [alias a kezdeti lekérdezéshez] PIVOT ([AggregationFunction] (ColumName) FOR [OszlopNév annak az oszlopnak, amelynek értékei oszlopfejlécekké válnak] IN ([Első elforgatott oszlopnév], [Második elforgatott oszlopnév], [Harmadik elforgatott oszlopnév] ... [utolsó elfordított oszlop])) AS [álneve a kimutatási táblának]
Itt,használhatja a ORDER BY záradék hogy az értékeket növekvő vagy csökkenő sorrendben rendezze. Most, hogy tudja, mi a PIVOT az SQL-ben és annak alapvető szintaxisában, lépjünk előre, és nézzük meg, hogyan kell használni.
Példák
A jobb megértés érdekében a következő táblázatot veszem figyelembe, hogy elmagyarázzam neked az összes példát.
Beszállítói táblázat:
Szállítóazonosító | NapokManufacture | Költség | Ügyfél-azonosító | PurchaseID |
egy | 12. | 1230 | tizenegy | P1 |
2 | huszonegy | 1543 | 22. | P2 |
3 | 32 | 2. 3. 4. 5 | tizenegy | P3 |
4 | 14 | 8765 | 22. | P1 |
5. | 42 | 3452 | 33 | P3 |
6. | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | tizenegy | P2 |
8. | 54. | 3654 | 22. | P2 |
9. | 33 | 1234 | tizenegy | P3 |
10. | 56 | 6832 | 33 | P2 |
Írjunk egyszerű lekérdezést az egyes vásárlók átlagos költségeinek lekérdezéséhez.
Válassza ki a CustomerID, AVG (Cost) AS AverageCostofCustomer-t a beszállítók csoportjából CustomerID szerint
Kimenet:
Ügyfél-azonosító | AverageCostofCustomer |
tizenegy | 1787,75 |
22. | 4654 |
33 | 5238,33 |
Most tegyük fel, hogy el akarjuk forgatni a fenti táblázatot. Itt a CustomerID oszlopértékek oszlopfejlécekké válnak.
- Pivot-tábla létrehozása egy sorral és három oszloppal. SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) for CustomerID IN ( [11], [22], [33])) AS PivotTable
Kimenet:
Cost_According_To_Customers | tizenegy | 22. | 33 |
AverageCostofCustomer | 1787,75 | 4654 | 5238,33 |
Jegyzet: Amikor használja összesített függvények PIVOT esetén a null értékeket nem vesszük figyelembe az összesítés kiszámítása során.
Nos, ez egy alapvető példa volt, de most értsük meg, hogyan működött a PIVOT záradék.
A PIVOT záradék működése
A fentiekben említettek szerint a PIVOT TABLE létrehozásához kövesse az alábbi lépéseket:
- Válassza ki az oszlopokat az elforgatáshoz
- Ezután válasszon egy forrás táblázatot.
- Alkalmazza a PIVOT operátort, majd használja az összesítő függvényeket.
- Említse meg a pivot értékeket.
Válassza ki az oszlopokat az elforgatáshoz
Kezdetben meg kell határoznunk azokat a mezőket, amelyeket be kell vonni az eredményeinkbe. Példánkban a Pivot tábla AverageCostofCustomer oszlopát vettem figyelembe. Ezután három másik oszlopot hoztunk létre a 11., 22. és 33. oszlopfejlécekkel.
Válassza ki az 'AverageCostofCustomer' AS Cost_According_To_Customers [11], [22], [33]
Válassza ki a forrás táblázatot
Ezután meg kell adnia a SELECT utasítást, amely visszaadja a kimutatási táblázat forrásadatait. Példánkban visszaküldjük a CustomerID és a Cost értéket a Beszállítók táblából.
(SELECT CustomerID, költség a beszállítóktól) AS SourceTable
Alkalmazza a PIVOT operátort, majd használja az összesítő függvényeket
Ezután meg kell adnia az összesítő függvényt, amelyet a forgatótábla létrehozása során használni kell. Példánkban az AVG függvényt használtam az átlagos költség kiszámításához.
PIVOT (AVG (költség)
Említse meg a pivot értékeket
Végül meg kell említenie azokat az értékeket, amelyeket fel kell venni az eredő pivot táblába. Ezeket az értékeket az oszlopfejlécekként kell használni a kimutatásban.
FOR CustomerID IN ([11], [22], [33])) AS PivotTable
Így működnek a PIVOT operátorok. Az SQL PIVOT-ról szóló cikkben továbblépve értsük meg, mennyiben különbözik az SQL UNPIVOT-tól.
SQL UNPIVOT
Az SQL UNPIVOT operátor a PIVOT-nal ellentétes művelet végrehajtására szolgál. Arra szolgál, hogy az oszlop adatait sor szintű adatokká alakítsa. Az UNPIVOT szintaxisa hasonló a PIVOT-hoz. Az egyetlen különbség az, hogy a ' UNPIVOT ” .
Példa:
Hozzunk létre egy táblázatot a SupplierID, AAA, BBB és CCC oszlopokkal. Illesszen be néhány értéket.
CREATE TABLE mintavételezés (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) GO
Kimenet:
Szállítóazonosító | AAA | BBB | CCC |
egy | 3 | 5. | 6. |
2 | 9. | 2 | 8. |
3 | 8. | egy | 7 |
Most tegyük fel, hogy fel akarjuk oldani az asztal forgatását. Ehhez hivatkozhat a következő kódra:
SELECT SupplierID, vásárlók, termékek FROM (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (termékek vevőknek (AAA, BBB, CCC)) AS példa GO
Szállítóazonosító | Ügyfelek | Termékek |
egy | AAA | 3 |
egy | BBB | 5. |
egy | CCC | 6. |
2 | AAA | 9. |
2 | BBB | 2 |
2 | CCC | 8. |
3 | AAA | 8. |
3 | BBB | egy |
3 | CCC | 7 |
Így használhatja az SQL PIVOT és az UNPIVOT programokat. Ezzel véget értünk ennek a cikknek. Remélem, megértette, hogyan kell használni az SQL-t. Ha többet szeretne megtudni a MySQL és ismerje meg ezt a nyílt forráskódú relációs adatbázist, majd nézze meg a mi amely oktató által vezetett élő képzéssel és valós projekt-tapasztalattal jár. Ez a képzés segít megérteni a MySQL-t alaposan, és elsajátítja a témát.
Van egy kérdésünk? Kérjük, említse meg az SQL Pivot-ról szóló cikk megjegyzés szakaszában, és még visszatérek.