UNPIVOT no SQL Server

Olá Caríssimos tudo bem ?

Em um post sobre banco de dados falei um pouco sobre o PIVOT no SQL. Um recurso bacana que gera uma “tabela dinâmica” transformando linhas em colunas no SQL Server.

E o contrário ? Transformar dado que estão em colunas em linhas ?

SIM!!! Isso é possível. Estava por esses dias fazendo uns desdobramentos para gerar combinações de números da Lotofácil (por isso talvez este seja meu último post, se eu ganhar vou tirar férias eternas!!!!) e precisei utilizar este recurso.

A tabela

Consultando no site da Caixa os resultados são baixados neste layout:

E o que preciso para conseguir gerar as estatísticas é esse layout:

Pra fazer isso é muito, muito simples, abra a query no SQL Server e siga o mesmo caminho abaixo:

SELECT Concurso, Dezenas,[Data Sorteio]
FROM
(SELECT Concurso,[Data Sorteio], Bola1, Bola2, Bola3, Bola4, Bola5, Bola6, Bola7, Bola8, Bola9, Bola10,
Bola11,Bola12,Bola13,Bola14,Bola15
FROM LOTFAC) PT
UNPIVOT
(Dezenas FOR Dez IN
(Bola1, Bola2, Bola3, Bola4, Bola5, Bola6, Bola7, Bola8, Bola9, Bola10,
Bola11,Bola12,Bola13,Bola14,Bola15)
)AS unpvt

Análise

1 – Observe que fiz uma subquery e dei o nome de PT, esta query deve ter todas as colunas que precisamos.

2 – Depois foi só utilizar o UNPIVOT para agregar os dados e colocar cada coluna como linha.

É SÓ ISSO!!!

Basta adaptar pra sua necessidade.

abraço a todos!!!

Anúncios

, , , , , , , , ,

  1. #1 por DriJay em 3 de janeiro de 2013 - 10:50 am

    Eai, ganhou?
    Também persigo a LF e também faço estatisticas no banco de dados…
    Atualmente, desdobrei a matriz de 18 números com as 25 dezenas (deu 480 mil combinações) e estou atualizando a estatística baseado nos resultados pra saber qual combinação com 18 números mais premiou. Também é possível que este seja meu último comentário kkkkk… Até fiz um site

    • #2 por Délio Tomaz em 9 de janeiro de 2013 - 8:30 am

      hehehe nem ganhei ainda…
      tá dificil, quando eu não jogo, os jogos que eu faria possivelmente iriam bem, hehehe
      Pior que sem sorte não vai mesmo, rsrs
      QUal o seu site?

      abraço

  2. #3 por Paula em 15 de agosto de 2013 - 10:35 am

    Ola, bom dia.
    estou tentando utilizar o unpivot, e esta dando erro.

    Criei a tabela temporaria

    CREATE TABLE #TABELAX (
    ID INT IDENTITY NOT NULL,
    NOME VARCHAR (300) NULL,
    DESCRIÇÃO VARCHAR(300) NULL
    )

    Essa tabela me retorna o seguinte resultado (esses resultados são retirados de uma tabela Y, onde esses dados estão misturado, apenas inserir na tabela temporaria organizado e inserir o campo ID)

    ID COLUNA1 COLUNA2
    1 NULL NULL
    2 Nome do host SPICEWORKS
    3 Nome do sistema operacional Microsoft Windows Server 2008 R2 Standard
    4 Versão do sistema operacional 6.1.7600 N/A compilação 7600
    5 Fabricante do sistema operacional Microsoft Corporation

    Preciso colocar essas colunas em uma mesma linha

    To usando a seguinte query …

    SELECT data_atual,servidor, instalacao, inicializacao, memoria_total, memoria_disponivel, memoria_virtual_maximo, memoria_virtual_disponivel, memoria_virtual_uso
    FROM TABELA Y
    UNPIVOT
    ( data_atual FOR dt IN (GETDATE(),2,10,11,12,25,26,27, 28, 29))AS UNPIVOT

    O erro esta dando no GETDATE().

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: