SQL Server: Klauzula PIVOT


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

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *