none
Usar PIVOT RRS feed

  • Pergunta

  • Boas galera do forum,

    preciso de uma ajuda de voçeis para poder aplicar o pivot eu nunca usei essa funçao por isso estou apanhando um pouco aqui vejam meu exemplo

    no resultado de uma consulta:


    DIRETORIA DE ENSINO    MUNICÍPIO    ESCOLA                                    CÓDIGO DA ESCOLA    ETAPA       ALUNOS    TURMA   MEDIA
    NORTE 1                          SAO PAULO    SUZANA DE CAMPOS DONA      35000061                    CRECHE    262           10         26
    NORTE 1                          SAO PAULO    SUZANA DE CAMPOS DONA      35000061                    PRE           243           08         30

    teria como eu fazer um pivo para cada linha da coluna etapa apareça em forma de coluna?

    sexta-feira, 1 de março de 2013 16:24

Respostas

  • Uelson,

    Veja se este exemplo ajuda:

    declare @pessoas as table (id int, nome varchar(30))
    declare @telefones as table (idpessoa int, tel varchar(9))
    insert into @pessoas values(1,'Marcelo')
    insert into @pessoas values(2,'Camila')
    insert into @pessoas values(3,'Tricolor')
    
    insert into @telefones values(1,'123-1234')
    insert into @telefones values(1,'222-2222')
    insert into @telefones values(1,'333-3333')
    insert into @telefones values(2,'123-1234')
    insert into @telefones values(2,'4444-4234')
    insert into @telefones values(2,'1406')
    insert into @telefones values(3,'125487-12')
    
    ;with cte
    as
    (
    select id,nome,tel, row_number() over (partition by id,nome order by id,nome ) as contador from @pessoas a inner join @telefones b ON a.id = b.idpessoa
    )
    select * from 
    (select id,nome,tel,contador from cte ) d
        pivot (max(tel) for contador in ([1],[2],[3])) as pvt
    

    Create table #Exemplo (codigo int, nome varchar(10))
    
    insert into #Exemplo (codigo, nome) Values (1,'jose')
    
    insert into #Exemplo (codigo, nome) Values (2,'mario')
    
    insert into #Exemplo (codigo, nome) Values (1,'jose')
    
    insert into #Exemplo (codigo, nome) Values (2,'mario')
    
    insert into #Exemplo (codigo, nome) Values (3,'celso')
    
    insert into #Exemplo (codigo, nome) Values (4,'andre')
    
    Select [jose],[mario],[celso],[andre] from #exemplo 
    Pivot (count(codigo) for nome in ([jose],[mario],[celso],[andre])) p


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Roberson Naves segunda-feira, 4 de março de 2013 19:56
    • Marcado como Resposta Uelson.Jr terça-feira, 2 de abril de 2013 23:04
    sábado, 2 de março de 2013 16:44

Todas as Respostas

  • Uelson,

    Veja se este exemplo ajuda:

    declare @pessoas as table (id int, nome varchar(30))
    declare @telefones as table (idpessoa int, tel varchar(9))
    insert into @pessoas values(1,'Marcelo')
    insert into @pessoas values(2,'Camila')
    insert into @pessoas values(3,'Tricolor')
    
    insert into @telefones values(1,'123-1234')
    insert into @telefones values(1,'222-2222')
    insert into @telefones values(1,'333-3333')
    insert into @telefones values(2,'123-1234')
    insert into @telefones values(2,'4444-4234')
    insert into @telefones values(2,'1406')
    insert into @telefones values(3,'125487-12')
    
    ;with cte
    as
    (
    select id,nome,tel, row_number() over (partition by id,nome order by id,nome ) as contador from @pessoas a inner join @telefones b ON a.id = b.idpessoa
    )
    select * from 
    (select id,nome,tel,contador from cte ) d
        pivot (max(tel) for contador in ([1],[2],[3])) as pvt
    

    Create table #Exemplo (codigo int, nome varchar(10))
    
    insert into #Exemplo (codigo, nome) Values (1,'jose')
    
    insert into #Exemplo (codigo, nome) Values (2,'mario')
    
    insert into #Exemplo (codigo, nome) Values (1,'jose')
    
    insert into #Exemplo (codigo, nome) Values (2,'mario')
    
    insert into #Exemplo (codigo, nome) Values (3,'celso')
    
    insert into #Exemplo (codigo, nome) Values (4,'andre')
    
    Select [jose],[mario],[celso],[andre] from #exemplo 
    Pivot (count(codigo) for nome in ([jose],[mario],[celso],[andre])) p


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Roberson Naves segunda-feira, 4 de março de 2013 19:56
    • Marcado como Resposta Uelson.Jr terça-feira, 2 de abril de 2013 23:04
    sábado, 2 de março de 2013 16:44
  • Ola junior, me ajudou sim a entender melhor obrigado cara.

    PS. So pisou na bola com o tricolor rsrs mais obrigado.

    segunda-feira, 4 de março de 2013 15:42