none
PIVOT RRS feed

  • Pergunta

  • pessoal, boa tarde..

    tenho duas tabelas relacionadas, e precisava que as linhas de uma fossem lidas como colunas, e essas colunas geradas, preenchida com as linhas da outra tabela..

    vi que é possível fazer algo parecido utilizando PIVOT, mas me parece que ele trabalha com agregação de valores, e não é o meu caso, é possível fazer algo parecido?

    TABELA1

    IDItemVenda
    IDGrupoComercial
    NomeItem
    Descricao

    TABELA2

    IDModuloItemVenda
    IDItemVenda
    NomeModulos

    Resultado Desejado

    Tabela1.NomeItem [Coluna]

    Tabela1.Descricao [Linha]

    Tabela2.NomeModulos [Linha]

    terça-feira, 21 de julho de 2015 15:16

Respostas

Todas as Respostas

  • kngipa,

    Então o resultado do Pivot seria utilizaod como Insert para Tabela2?

    Qual seria o critério para montagem do Pivot? Qual seria a coluna base para gerar o Pivot?

    Veja este exemplo de criação de Pivot:

    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
    


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    terça-feira, 21 de julho de 2015 17:41
  • não vou usar insert, o resultado será apenas retorno..
    terça-feira, 21 de julho de 2015 18:11
  • Kngipa,

    Então o exemplo que eu te passei não ajuda?

    Observe que linha do comando Pivot você deverá utilizar uma função de agregação acompanhado com a opção for em conjunto com uma coluna, que você deve especificar os critérios para ordenação do Pivot.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 21 de julho de 2015 19:02
  • na verdade eu não sei se o PIVOT iria atender a minha necessidade.. nunca o utilizei, apenas fiz uns testes hoje e observei que para sua utilização é necessário a que seja usado uma função para agregar valor..

    o que acontece é que tenho duas tabelas, uma ontem eu tenho os meus produtos e uma outra com os itens inclusos nesse produto..

    eu gostaria que o ProdutoUM viesse a ser uma coluna, e que todos os seus itens da outra tabela fosse linha.. exemplo..

    ProdutoUm        ProdutoDois
    ItemUM             ItemDois
    ItemDois           ItemTres
    ItemTRES         ItemUM

    só que o resultado que obtenho é:

    ProdutoUm | ItemUM
    ProdutoUm | ItemDois
    ProdutoUm | ItemTRES
    ProdutoDois | ItemUM
    ProdutoDois | ItemDois
    ProdutoDois | ItemTRES

    eu não sei se via SQL, é possível chegar nesse resultado..


    terça-feira, 21 de julho de 2015 21:05
  • Deleted
    terça-feira, 21 de julho de 2015 22:20
  • então, as tabelas tem essa estrutura

    TABELA1
    IDItemVenda
    IDGrupoComercial
    NomeItem           Seriam os produtos (ProdutoUM)
    Descricao
    
    TABELA2
    IDModuloItemVenda
    IDItemVenda
    NomeModulos        Seriam meus itens (ItemUM)

    elas se relacionam pelos IDs

    quarta-feira, 22 de julho de 2015 12:46
  • Deleted
    quarta-feira, 22 de julho de 2015 13:16
  • um produto possui vários itens...
    quarta-feira, 22 de julho de 2015 14:11
  • Deleted
    quarta-feira, 22 de julho de 2015 18:22