O que é uma tabela dinâmica no SQL?

No SQL, uma tabela dinâmica é um conjunto de dados que são transformados de um grupo de linhas separadas para um grupo de colunas. Em bancos de dados relacionais, como Microsoft SQL Server, Oracle e MySQL, as tabelas dinâmicas podem ser usadas para simplificar dados extensos e facilitar a leitura e o entendimento. Para criar uma tabela dinâmica, um agregado é usado em um conjunto de dados para distribuir várias linhas de uma única coluna em uma única linha com várias colunas. Isso energiza essencialmente o conjunto de resultados lateralmente.

Dados de amostra

Para entender melhor uma tabela dinâmica, um exemplo de alguns dados de vendas é mostrado abaixo. Copie o seguinte no Microsoft SQL Server Management Studio para testar os exemplos.

Crie a tabela #PivotTestTable (CustName varchar (8), Item_Type varchar (8), Item_Amount numérico (6.2))

insira em #PivotTestTable selecione ‘Jason’, ‘Computador’, 435,34 union selecione ‘Jason’, ‘Software’, 243,54 union selecione ‘Jason’, ‘Monitor’, 158,23 union selecione ‘Alison’, ‘Computer’, 345,89 union select ‘ Alison ‘,’ Software ‘, 78,78 union select’ Alison ‘,’ Monitor ‘, 123,45

Iniciando dados não dinâmicos

Quando a tabela temporária, # PivotTestTable, é consultada, o resultado é o seguinte.

CustName Item_Type Item_Amount


Alison Computer 345.89 Alison Monitor 123.45 Alison Software 78.78 Jason Computer 435.34 Jason Monitor 158.23 Jason Software 243.54

Como você pode ver, o conjunto de resultados mostra dois clientes, Alison e Jason, compraram três tipos diferentes de produtos. Existem seis linhas de dados para dois clientes. Se queremos ver os dados em uma única linha para cada cliente, uma tabela dinâmica é usada para alcançar o resultado desejado.

Função dinâmica da DYNAMICS

O Microsoft SQL Server tem uma função dinâmica incorporada no SQL Server. Aqui está um exemplo com os dados # PivotTestTable.

SELECT CustName como Total_Sales_By_Cust, Computador, Monitor, Software FROM (
SELECT CustName, Item_Type, Item_Amount FROM #PivotTestTable) para PIVOT (soma (Item_Amount) FOR Item_Type em (Computador, Monitor, Software) b

Esta consulta retornará as seis linhas originais articuladas em duas linhas com colunas separadas para cada tipo de item vendido. O conjunto de resultados gerados a partir desta consulta está abaixo.

Software de Monitor de Computador Total_Sales_By_Cust


Alison 345,89 123,45 78,78 Jason 435,34 158,23 243,54

Dinâmica por declaração de caso acumulada

Usando uma função cumulativa (SUM, AVG, MIN, MAX) em torno de uma instrução de caso em uma consulta SQL, podemos obter o mesmo resultado que a função dinâmica com menos trabalho.

SELECT CustName como Total_Sales_By_Cust, soma (caso Item_Type quando ‘Computador’ e depois Item_Amount final) como Computador, soma (caso Item_Type quando ‘Monitor’ e Item_Amount final) como Monitor, soma (caso Item_Type quando ‘Software’ e item_Amount final) como Software FROM #PivotTestTable GRUPO POR CustName

Essa consulta retornará exatamente o mesmo resultado que o exemplo anterior e é apenas uma preferência para o tipo de dinâmica a ser usada.

Erros comuns em tabelas dinâmicas

Um erro comum para criar uma tabela dinâmica é criar uma nova combinação na tabela de origem. Isso produzirá resultados não confiáveis ​​e deve ser evitado. Este exemplo é estritamente uma amostra do que não fazer. O resultado será o mesmo, no entanto, este exemplo não funcionará em todos os casos.

SELECT p1.CustName, p1.Item_Amount como computador, p2.Item_Amount como monitor, p3.Item_Amount como software FROM #PivotTestTable p1 INNER JOIN #PivotTestTable p2 em p1.CustName = p2.CustName e p2.Item_Type = ‘Monitor’ INNER JO PivotTestTable p3 em p1.CustName = p3.CustName e p3.Item_Type = ‘Software’ WHERE p1.Item_Type = ‘Computador’

Referências

 

Você pode estar interessado:

Deixe um comentário