Przykład
Klauzula PIVOT może być używana w SQL Server (Transact-SQL).
Spójrzmy na przykład. Gdybyśmy mieli tabelę pracowników zawierającą następujące dane:
numer_pracownika | last_name | first_name | pensja | dept_id |
---|---|---|---|---|
12009 | Sutherland | Barbara | 54000 | 45 |
34974 | Yates | Fred | 80000 | 45 |
34987 | Erickson | Neil | 42000 | 45 |
45001 | Parker | Sally | 57500 | 30 |
75623 | Bramy | Steve | 65000 | 30 |
Następnie uruchomiliśmy następującą instrukcję SQL, która tworzy krzyżowe tabulacje w zapytaniu używającym klauzuli PIVOT:
Zwróci następujący wynik:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |
Ten przykład utworzyłby tabelę przestawną wyświetlającą łączne wynagrodzenie dla dept_id 30 i dept_id 45. Wyniki są wyświetlane w jednym wierszu z dwoma działami każdy w osobnej kolumnie.
Teraz podzielmy klauzulę PIVOT i wyjaśnijmy, jak to działało.
Określ kolumny w wynikach zestawień krzyżowych
Najpierw chcemy określić, które pola mają być uwzględnione w naszych wynikach zestawień krzyżowych. W tym przykładzie chcemy dołączyć wartość literału „TotalSalary” jako pierwszą kolumnę w tabeli przestawnej. Chcemy utworzyć jedną kolumnę dla dept_id 30 i drugą dla dept_id 45. Daje nam to 3 kolumny w naszej tabeli przestawnej.
SELECT "TotalSalary" AS TotalSalaryByDept, ,
Określ źródło Dane tabeli
Następnie musimy określić instrukcję SELECT, która zwróci dane źródłowe dla tabeli przestawnej.
W tym przykładzie chcemy zwrócić dept_id i wartości wynagrodzenia z tabela pracowników:
(SELECT dept_id, salary FROM employees) AS SourceTable
Musisz określić alias dla zapytania źródłowego. W tym przykładzie aliasowaliśmy zapytanie jako SourceTable.
Określ funkcję agregującą
Następnie musimy określić, jakiej funkcji agregującej użyć podczas tworzenia zapytania krzyżowego. Możesz użyć dowolnej funkcji agregującej, takiej jak SUMA, LICZBA, MIN, MAKS lub ŚREDNIA.
W tym przykładzie użyjemy funkcji SUMA. Spowoduje to zsumowanie wartości wynagrodzenia:
PIVOT(SUM(salary)
Określ wartości przestawne
Na koniec musimy określić, jakie wartości przestawne mają uwzględniać w naszych wynikach . Zostaną one użyte jako nagłówki kolumn w naszym zapytaniu krzyżowym.
W tym przykładzie zwrócimy tylko wartości dept_id równe 30 i 45. Te wartości staną się nagłówkami naszych kolumn w naszym przestawieniu stół. Zwróć też uwagę, że te wartości są skończoną listą wartości dept_id i niekoniecznie będą zawierać wszystkie możliwe wartości.
FOR dept_id IN (, )
Teraz, gdy połączymy je razem, otrzymujemy następującą tabelę przestawną:
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |