SQL Server: cláusula PIVOT (Português)


Exemplo

A cláusula PIVOT pode ser usada no SQL Server (Transact-SQL).

Vejamos um exemplo. Se tivéssemos uma tabela de funcionários que contivesse os seguintes dados:

employee_number last_name first_name salário dept_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

E executamos a seguinte instrução SQL que cria uma tabulação cruzada na consulta usando a cláusula PIVOT:

Ele retornaria o seguinte resultado:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Este exemplo criaria uma tabela dinâmica para exibir o salário total de dept_id 30 e dept_id 45. Os resultados são exibidos em uma linha com os dois departamentos aparecendo cada um em sua própria coluna.

Agora, vamos separar a cláusula PIVOT e explicar como ela funcionava.

Especificar colunas em resultados de tabulação cruzada

Primeiro, queremos especificar quais campos incluir em nossos resultados de tabulação cruzada. Neste exemplo, queremos incluir o valor literal “TotalSalary” como a primeira coluna da tabela dinâmica. E queremos criar uma coluna para dept_id 30 e uma segunda coluna para dept_id 45. Isso nos dá 3 colunas em nossa tabela dinâmica.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Especifique a fonte Dados da tabela

Em seguida, precisamos especificar uma instrução SELECT que retornará os dados de origem para a tabela dinâmica.

Neste exemplo, queremos retornar os valores de dept_id e salary de a tabela de funcionários:

(SELECT dept_id, salary FROM employees) AS SourceTable

Você deve especificar um alias para a consulta de origem. Neste exemplo, criamos o alias da consulta como SourceTable.

Especifique a função de agregação

Em seguida, precisamos especificar qual função de agregação usar ao criar nossa consulta de tabulação cruzada. Você pode usar qualquer agregado, como funções SUM, COUNT, MIN, MAX ou AVG.

Neste exemplo, vamos usar a função SUM. Isso somará os valores salariais:

PIVOT(SUM(salary)

Especificar valores dinâmicos

Finalmente, precisamos especificar quais valores dinâmicos incluir em nossos resultados . Eles serão usados como títulos de coluna em nossa consulta de tabulação cruzada.

Neste exemplo, vamos retornar apenas os valores dept_id de 30 e 45. Esses valores se tornarão nossos títulos de coluna em nosso pivô tabela. Além disso, observe que esses valores são uma lista finita dos valores dept_id e não conterão necessariamente todos os valores possíveis.

FOR dept_id IN (, )

Agora, quando colocamos tudo junto, obtemos a seguinte tabela dinâmica:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *