O que é uma tabela dinâmica no sql?
No SQL, uma tabela de pivô é um conjunto de dados que é transformada a partir de um conjunto de linhas separadas de um conjunto de colunas. Em bancos de dados relacionais, como o Microsoft SQL Server, Oracle e MySQL, tabelas dinâmicas pode ser usado para simplificar dados abrangentes, a fim de torná-lo mais fácil de ler e entender. Para criar uma tabela de pivô, um agregado é utilizado com um conjunto de dados para distribuir múltiplas linhas de uma única coluna em fila única com múltiplas colunas. Isto essencialmente gira o conjunto de resultados para os lados.
Video: Análise de Dados com Tabela Dinâmica
Dados de amostra
Para entender melhor uma tabela dinâmica, um exemplo de alguns dados de vendas são listadas aqui. Copie o seguinte no Microsoft SQL Server Management Studio para experimentar os exemplos. Criar a tabela #PivotTestTable (varchar CustName (8), item_type varchar (8), Item_Amount numérico (6,2)) inserir em #PivotTestTable selecione `Jason`, `Computer`, 435,34 união selecione `Jason`, `Software`, 243,54 union select `Jason`, `monitor`, 158,23 união selecione `Alison`, `Computer`, 345,89 união selecione `Alison`, `Software`, 78,78 união selecione `Alison`, `monitor`, 123.45
Iniciando não dinamizados Dados
Quando a tabela de temperatura, #PivotTestTable, é interrogado, o resultado é o seguinte. CustName item_type Item_Amount -------- --------- ----------- Alison Computer 345,89 Alison Monitor de 123.45 Alison Software 78,78 Jason Computer 435,34 Jason Monitor de 158,23 Jason Software 243,54 Como você pode ver, o conjunto de resultados mostra dois clientes, Alison e Jason, que adquiriram três tipos diferentes de itens. Existem seis linhas de dados para dois clientes. Se quisermos ver os dados em uma única linha por cliente, gostaríamos de usar uma tabela dinâmica para atingir o resultado desejado.
Pivô por função de pivô
Microsoft SQL Server tem uma função PIVOT embutido no SQL Server. Aqui está um exemplo com os dados #PivotTestTable. SELECIONE CustName como Total_Sales_By_Cust, computador, monitor, Software FROM (SELECT CustName, item_type, Item_Amount DE #PivotTestTable) um pivô (soma (Item_Amount) PARA item_type em (computador, monitor, Software)) b Essa consulta retornará as seis linhas originais girou -se em duas linhas com as colunas separadas para cada tipo de produto vendido. O conjunto de resultados gerados a partir desta consulta é aqui: Total_Sales_By_Cust Computer Monitor Software ------------------- --------- -------- --------- Alison 345,89 123,45 78,78 Jason 435,34 158,23 243,54
Video: Demarcar uma área com a Função DESLOC para uso em Tabela Dinâmica
Pivot pela Declaração agregado caso
Usando uma função de agregação (SUM, AVG, MIN, MAX) em torno de uma declaração caso em uma consulta SQL, somos capazes de alcançar o mesmo resultado que a função de pivô com menos trabalho. SELECIONE CustName como Total_Sales_By_Cust, sum (caso item_type quando `Computer`, então Item_Amount final) como computador, sum (caso item_type quando `Monitor`, em seguida, Item_Amount final) como Monitor, sum (caso item_type quando `Software`, então Item_Amount final) como software a partir de #PivotTestTable GROUP BY CustName Esta consulta retornará exactamente o mesmo conjunto de resultados do exemplo anterior e é apenas uma preferência para o tipo de articulação a usar.
Erro comum com tabelas dinâmicas
Um erro comum para criar uma tabela dinâmica é criar uma junção de volta na tabela de origem. Isto produzirá resultados não confiáveis e devem ser evitados. Este exemplo é estritamente um exemplo do que não fazer. O resultado neste exemplo será o mesmo- no entanto, este exemplo não funcionará em todos os casos. SELECIONE p1.CustName, p1.Item_Amount como Computador, p2.Item_Amount como Monitor, p3.Item_Amount como softwares de #PivotTestTable p1 INNER JOIN p2 #PivotTestTable em p1.CustName = p2.CustName e p2.Item_Type = `Monitor` INNER JOIN # P3 PivotTestTable em p1.CustName = p3.CustName e p3.Item_Type = `Software` WHERE p1.Item_Type = `Computer`
Video: SQL Server Aula 01 - Criação de Tabelas
Referências
- ligação MSDN