Mis on Pivot Table SQL ?

Mis on Pivot Table SQL ?

SQL, pivot tabel on andmete kogum, mis on muutnud alates kogumine eraldi ridade kollektsioon sambad.Relaatiotietokannat, nagu Microsoft SQL Server, Oracle ja MySQL, pivot tabeleid saab lihtsustada ulatuslikke andmeid, et oleks lihtsam lugeda ja mõista.Et luua pivot table täiteaine vastu kasutatakse andmete kogum levitada mitu rida ühe veeru ühte ritta mitme sambad.See sisuliselt pöördub tulemuse hulka külili.

valimi andmeid

  • Et paremini mõista pivot table, näiteks mõne müügiandmed on loetletud siin.Kopeeri järgmised Microsoft SQL Server Management Studio proovida näiteid.

    Loo tabel #PivotTestTable
    (CustName varchar (8),
    ITEM_TYPE varchar (8),
    Item_Amount numbriline (6,2))

    lisada #PivotTestTable
    vali "Jason", "Computer", 435,34
    Liidu
    vali Jason "," Tarkvara ", 243,54
    Liidu
    vali" Jason "," Monitor ", 158,23
    Liidu
    vali Alison", "Computer", 345,89
    Liidu
    vali Alison "," Tarkvara ", 78,78
    Liidu
    vali Alison "," Monitor ", 123,45

Alates UnPivoted Andmed

  • Kui temp tabeli #PivotTestTable, küsitakse, tulemus on järgmine.

    CustName ITEM_TYPE Item_Amount

    Alison Arvuti 345,89
    Alison Monitor 123,45
    Alison Tarkvara 78,78
    Jason Arvuti 435,34
    Jason Monitor 158,23
    Jason Tarkvara 243,54

    Nagu näete, on mitmeid tulemus näitab kaks klienti, Alison ja Jason, kel onostetud kolme erinevat tüüpi objekte.Seal on kuus rida andmeid kahe klientidele.Kui me tahtsime näha andmete ühes reas ühe kliendi kohta, oleksime kasutada pivot table, et saavutada soovitud tulemus.

Pivot poolt pöördfunktsiooni

  • Microsoft SQL Server on pöördfunktsiooni ehitatud SQL Server.Siin on näide koos #PivotTestTable andmeid.

    SELECT

    CustName kui Total_Sales_By_Cust,
    Computer,
    Monitor,
    Tarkvara

    FROM

    (
    SELECT
    CustName,
    ITEM_TYPE,
    Item_Amount
    FROM #PivotTestTable
    ) a

    pöörduvad

    (
    summa (Item_Amount)
    FOR ITEM_TYPE sisse(Computer, Monitor, tarkvara)
    ) b

    See päring tagastab originaali kuus rida kallutatava kahte rida eraldi veerud iga müüdud eseme.Tulemuseks komplekt tekkinud see päring on siin:

    Total_Sales_By_Cust Arvuti Monitor tarkvara

    Alison 345,89 123,45 78,78
    Jason 435,34 158,23 243,54

Pivot koondist puhul avaldus

  • Kasutadeskokku funktsioon (SUM, AVG, MIN, MAX) umbes puhul avaldus SQL päringu, saame sama tulemuse, kui pöördfunktsiooni vähem tööd.

    SELECT

    CustName kui Total_Sales_By_Cust,
    summa (juhul ITEM_TYPE kui "arvuti", siis Item_Amount lõpus) ​​kui arvuti,
    summa (juhul ITEM_TYPE kui "Monitor" siis Item_Amount lõpus) ​​kui Monitor,
    summa (juhul ITEM_TYPE kui "tarkvara", siisItem_Amount lõpus) ​​kui tarkvara

    FROM #PivotTestTable
    GROUP BY CustName

    See päring tagastab täpselt sama tulemuse hulka eelmise eeskuju ja on ainult eelistamine, mis tüüpi pivot kasutada.

ühise ekslikult Pivot tabelid

  • Levinud viga luua pivot table on luua liitu tagasi allikas tabeli.Selle tulemusena saadakse ja usaldusväärsed tulemused ja seda tuleks vältida.See näide on rangelt näide sellest, mida ei tohi teha.Tulemuseks on see proov on sama;aga see proov ei tööta alati.

    SELECT

    p1.CustName,
    p1.Item_Amount nagu arvuti,
    p2.Item_Amount nagu Monitor,
    p3.Item_Amount nagu Tarkvara

    FROM #PivotTestTable p1
    INNER JOIN #PivotTestTable p2

    kohta p1.CustName = p2.CustName
    jap2.Item_Type = "Monitor"

    INNER JOIN #PivotTestTable p3

    kohta p1.CustName = p3.CustName
    ja p3.Item_Type = "Tarkvara"

    KUS p1.Item_Type = "Arvuti"

410
0
5
Andmebaasitarkvaraga