Como poderia montar um Pivot no SQL Server

24/03/2015

Como eu poderia montar um Pivot no SQL Server
Gostaria de apresentar os resultados em colunas separadas, como poderia fazer isso?
Colocar a coluna b.quantidade separada de acordo com entrada é saída
Agradeço

select 
   case c.tipoentadasaida
     when 'E' then 'Entrada' 
     when 'S' then 'Saida' 
   end,
       a.destino_dataemissao,
       a.inicio_numero_nota,
       a.inicio_descricao_natureza,
       a.destino_razao,
       a.emite_razao,
       b.codigocomercial, 
       b.descricao,
       d.qtdestoque as QtdDoEstoqueAtual,
       b.quantidade as Movimento
   from 
 TB_C_ENTRADA_NOTA a
 inner join TB_D_ENTRADA_NOTA b on a.controleentradanota = b.controleentradanota 
 inner join TB_TIPO_MOVIMENTO c on c.controletipomovimento = a.controletipomovimento
 inner join TB_PRODUTO d on d.codigocomercial = b.codigocomercial 
where b.codigocomercial = 'LR001'         
order by a.destino_dataemissao,c.tipoentadasaida,a.inicio_numero_nota,
       a.inicio_descricao_natureza,a.destino_razao,a.emite_razao, b.quantidade

Respostas

24/03/2015

Marcos P

Olá !

Você poderia dar um exemplo da saída que precisa gerar ?
Responder Citar

24/03/2015

Crist

Bom dia

Ficaria assim, hoje o resultado b.quantidade as Movimento vem na mesma coluna, quero que fique assim

SAIDA LR001 LUVA RASPA C/REFORCO 07CM CELMAR NULL 100.00 qtdentrada qtdsaida
ENTRADA LR001 LUVA RASPA C/REFORCO 07CM CELMAR NULL 100.00 qtdentrada qtdsaida

agradeço
Responder Citar

24/03/2015

Marcos P

Não entendi sua resposta...

Você quer que os dados sejam gerados em duas linhas ?

É isso ?

Você consegue usar a tag de código ( Inserir Código ), aqui em cima no edito, para colocar o texto formatado ( e de preferência com o cabeçalho das colunas ) ?
Responder Citar

24/03/2015

Crist

Amigo, veja se assim fica mais fácil

[img:descricao=consulta saida]http://arquivo.devmedia.com.br/forum/imagem/248885-20150324-105938.jpg[/img]


select 
   case c.tipoentadasaida
     when 'E' then 'Entrada' 
     when 'S' then 'Saida'  
   end,
      -- a.destino_dataemissao,
      -- a.inicio_numero_nota,
      -- a.inicio_descricao_natureza,
      -- a.destino_razao,
      -- a.emite_razao,
      -- b.codigocomercial, 
      -- b.descricao,
       d.qtdestoque as QtdDoEstoqueAtual,
       b.quantidade as Movimento,
       'qtdentrada',
       'qtdsaida'
   from 
 TB_C_ENTRADA_NOTA a
 inner join TB_D_ENTRADA_NOTA b on a.controleentradanota = b.controleentradanota 
 inner join TB_TIPO_MOVIMENTO c on c.controletipomovimento = a.controletipomovimento
 inner join TB_PRODUTO d on d.codigocomercial = b.codigocomercial 
where b.codigocomercial = 'LR001'         
order by a.destino_dataemissao,c.tipoentadasaida,a.inicio_numero_nota,
       a.inicio_descricao_natureza,a.destino_razao,a.emite_razao, b.quantidade
       
Responder Citar

24/03/2015

Marcos P

Isso resolve ?

select
   case c.tipoentadasaida
     when 'E' then 'Entrada'
     when 'S' then 'Saida' 
   end,
      -- a.destino_dataemissao,
      -- a.inicio_numero_nota,
      -- a.inicio_descricao_natureza,
      -- a.destino_razao,
      -- a.emite_razao,
      -- b.codigocomercial,
      -- b.descricao,
       d.qtdestoque as QtdDoEstoqueAtual,
       b.quantidade as Movimento,
   case c.tipoentadasaida
     when 'E'
     then b.quantidade 
     else 0
   end as  qtdentrada,
   case c.tipoentadasaida
     when 'S'
     then b.quantidade 
     else 0
   end as qtdsaida
   from
 TB_C_ENTRADA_NOTA a
 inner join TB_D_ENTRADA_NOTA b on a.controleentradanota = b.controleentradanota
 inner join TB_TIPO_MOVIMENTO c on c.controletipomovimento = a.controletipomovimento
 inner join TB_PRODUTO d on d.codigocomercial = b.codigocomercial
where b.codigocomercial = 'LR001'        
order by a.destino_dataemissao,c.tipoentadasaida,a.inicio_numero_nota,
       a.inicio_descricao_natureza,a.destino_razao,a.emite_razao, b.quantidade
Responder Citar

24/03/2015

Crist

Sim.
Agradeço!
Responder Citar