Esimerkki
PIVOT-lausetta voidaan käyttää SQL Serverissä (Transact-SQL).
Katsotaanpa esimerkki. Jos meillä olisi työntekijöiden taulukko, joka sisälsi seuraavat tiedot:
työntekijän_numero | sukunimi | etunimi | palkka | osaston_id |
---|---|---|---|---|
12009 | Sutherland | Barbara | 54000 | 45 |
34974 | Yates | Fred | 80000 | 45 |
34987 | Erickson | Neil | 42000 | 45 |
45001 | Parker | Sally | 57500 | 30 |
75623 | Gates | Steve | 65000 | 30 |
Ja suoritimme seuraavan SQL-käskyn, joka luo ristitaulukon kyselyssä PIVOT-lausekkeen avulla:
Se palauttaisi seuraavan tuloksen:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |
Tämä esimerkki luo pivot-taulukon, jossa näkyy osastojen_id 30 ja osastojen_id 45 kokonaispalkka. Tulokset näytetään yhdellä rivillä kahden osaston ilmestyessä kukin omassa sarakkeessaan.
Erotetaan nyt PIVOT-lauseke ja selitetään, miten se toimi.
Määritä sarakkeet taulukoidenvälisissä tuloksissa
Ensinnäkin haluamme määrittää, mitkä kentät sisällytetään ristitaulukkoihin. Tässä esimerkissä haluamme sisällyttää kirjaimellisen arvon ”TotalSalary” pivot-taulukon ensimmäiseksi sarakkeeksi. Ja haluamme luoda yhden sarakkeen osastolle 30 ja toisen sarakkeen osastolle 45. Tämä antaa meille 3 saraketta pivot-taulukkoon.
SELECT "TotalSalary" AS TotalSalaryByDept, ,
Määritä lähde Taulukon tiedot
Seuraavaksi meidän on määritettävä SELECT-käsky, joka palauttaa pivot-taulukon lähdetiedot.
Tässä esimerkissä haluamme palauttaa dept_id- ja palkkiarvot työntekijöiden taulukko:
(SELECT dept_id, salary FROM employees) AS SourceTable
Sinun on määritettävä alias lähdekyselylle. Tässä esimerkissä kysely on aliaksistettu SourceTable-muotoon.
Määritä aggregaattitoiminto
Seuraavaksi meidän on määritettävä, mitä aggregaattitoimintoa käytetään taulukkojen välisen kyselyn luomisessa. Voit käyttää mitä tahansa aggregaatteja, kuten SUM, COUNT, MIN, MAX tai AVG.
Tässä esimerkissä aiomme käyttää SUM-toimintoa. Tämä laskee yhteen palkkojen arvot:
PIVOT(SUM(salary)
Määritä pivot-arvot
Lopuksi meidän on määritettävä, mitkä pivot-arvot sisällytetään tulokseemme . Näitä käytetään sarakeotsikoina ristitaulukkoa koskevassa kyselyssä.
Tässä esimerkissä aiomme palauttaa vain dept_id-arvot 30 ja 45. Näistä arvoista tulee sarakkeen otsikkoja pivotissamme. pöytä. Huomaa myös, että nämä arvot ovat rajallinen luettelo dept_id-arvoista eivätkä välttämättä sisällä kaikkia mahdollisia arvoja.
FOR dept_id IN (, )
Nyt kun koomme sen kaikki yhteen, saamme seuraavan pivot-taulukon:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |