Muuntaa Rivit sarakkeiksi (PIVOT) ja Sarakkeet Riveiksi (UNPIVOT) SQL Server


Johdanto

– minun viimeinen artikkeli, ”Muuntaa Pilkulla Erotettuna Arvo Riveiksi ja Päinvastoin SQL Server”, puhuin siitä, miten voit muuntaa pilkulla erotettuna (tai erottaa jokin muu merkki) arvot yhteen sarakkeeseen riveihin ja päinvastoin. Tässä artikkelissa, aion osoittaa, miten voit muuntaa rivien arvot sarakkeisiin arvot (PIVOT) ja sarakkeiden arvot riveihin arvot (UNPIVOT) SQL Server.,

Muuntaa Rivien Sarakkeiden PIVOT

SQL Server on PIVOT-vertailuoperaattori kääntää ainutlaatuinen arvot on määritetty sarakkeen useita rivejä useita sarakkeen arvot lähtö (cross-tab), tehokkaasti pyörivä pöytä. Se mahdollistaa myös aggregointien suorittamisen tarvittaessa sarakkeen arvoille, joita odotetaan lopullisessa tuotoksessa. Perus syntaksi PIVOT-vertailuoperaattori näyttää tältä:

käsikirjoitus alla, katsotaanpa luoda taulukon ja ladata joitakin tietoja osaksi sitä., Kuten näet alla olevasta kuvasta, sillä on myyntitietoja muutamista maista parin vuoden ajan. Myös, jos huomaat, kunkin maan ja kunkin vuoden on erillinen rivi.

Nyt käyttämällä PIVOT-operaattori, me muuntaa rivin arvot-sarakkeen arvot käsikirjoituksen kanssa ottaen huomioon alla ja tulokset kuten on esitetty kuva alla.

Vaikka olemme käyttäneet SUMMA yhdistäminen toiminto, tässä tapauksessa ei ole summattu, koska siellä on vain yksi rivi jokaiselle ainutlaatuinen yhdistelmä maa ja vuosi., Huomaathan, että pivot-sarakkeen arvoissa käytetään sulkuja; nämä ovat tarpeen.

Tuo Dynaamisuutta PIVOT

Jos huomaat, edellä kirjoitus, olemme antaneet arvoja (2005, 2006, 2007 ja 2008) pivot-sarakkeita, koska nämä arvot ovat saatavilla alkuperäisessä aineistot. Mutta entä jos tulevaisuudessa odotetaan joitakin lisäarvoja, esimerkiksi 2009 ja 2010 jne. kääntöpylvääseen?,

Tässä tapauksessa, voit silti käyttää pivot-sarakkeen arvot, joiden odotetaan tulla (tai joita ei ole vielä saatavilla alkuperäinen aineisto) tulevaisuudessa, vaikka näet NULL sen arvoja. Käsikirjoitus esitetään tämän skenaarion ja alla oleva kuva näyttää Nollia vuosina 2009 ja 2010, koska ei ole tietoa näiden vuosien aikana.

edellä keskusteltiin lähestymistapa toimii hyvin, jos tiedät jo kaikki mahdolliset arvot pivot-sarake, mutta mitä jos et?,

Tässä tapauksessa, voit kirjoittaa dynaaminen kysely ensin napata kaikki ainutlaatuisia arvoja pivot-sarake suorituksen ja sitten kirjoittaa dynaamisen kyselyn, suorittaa sen kanssa pivot-kyselyn, kuten alla:

Muuntaa Sarakkeet Rivit – UNPIVOT

UNPIVOT on toinen vertailuoperaattori SQL-Palvelin, joka suorittaa lähes päinvastainen toiminta PIVOT, jonka pyörivä sarakkeen arvot riveihin arvoja. Havainnollistan tätä esimerkin avulla; avulla luodaan taulukko, jossa kääntää tiedot edellisen kyselyn kanssa käsikirjoituksen alle., Alla oleva kuva näyttää tiedot äskettäin luodusta taulukosta, jossa on kääntyvä data.

jos Haluat kiertää sarakkeen arvot rivin arvoja, me nyt käyttää UNPIVOT operaattori, kuten on esitetty alla. Alla oleva kuva näyttää kääntää tiedot:

Jos viittaat takaisin, sanoin UNPIVOT on lähes käänteinen KIERTO-operaattori; tämä tarkoittaa, että se saattaa olla tai ei olla täsmälleen sama. Syynä on, Pivot suorittaa yhdistäminen pyöriessä rivin arvot-sarakkeen arvot ja ehkä mahdollista yhdistää useita peräkkäin arvot osaksi yhden sarakkeen arvo lähtö., Esimerkiksi harkita tietyn maan ja vuosi on kaksi arvoa, vaikkapa 5000 ja 6000. Nyt kun pivot sitä, lähtö on 11000 kuin sarakkeen arvo, jos sinulla on SUMMA, koska yhdistäminen toiminto. Myöhemmin, jos haluat purkaa sen takaisin, saat 11000 ei kahden furcated arvot (5000 ja 6000 kuten alkuperäinen). Tästä huolimatta voimme sanoa, että jos käänteiset arvot ovat aggregoituja arvoja, alkuperäistä tietoa ei ole mahdollista saada takaisin.,

Johtopäätös

tässä artikkelissa olen osoittanut, miten voit muuntaa rivin arvot-sarakkeen arvot (PIVOT) ja sarakkeen arvot rivin arvot (UNPIVOT) SQL Server. Puhuin myös dynaamisen kyselyn kirjoittamisesta dynaamisen pivot-kyselyn kirjoittamiseksi, jossa mahdolliset pivot-sarakearvot määritetään ajonaikaisina.

Leave a Comment