none
Select Complicado RRS feed

  • Pergunta

  • Boa tarde.

    Tenho uma tabela com os campos (EntradaID, PedidoID, ProdutoID, Lote)

    O que ocorre é que um mesmo produto pode ter dois lotes Ex:

    EntradaID, PedidoID, ProdutoID, Lote
            1                1                  1            1
            2                1                  1            2

    Se possivel gostaria de realizar um select com o seguinte resultado

    PedidoID, ProdutoID, Lote,Lote
            1                1             1       2

    Grato

    Fabio

    sexta-feira, 11 de agosto de 2006 19:24

Todas as Respostas

  •  

     

     Segue....

     

    http://www.forumweb.com.br/artigos/artigos.php?action=file&id=324, se tiver duvidas retorne.

     

    Abs.

    segunda-feira, 14 de agosto de 2006 10:15
  • Ragucci,

    Procure também no Books On-Line do SQL Server informações sobre Pivot.

    O Pivot é o conceito utilizado para transformar colunas em linhas em um banco de dados.

     

    segunda-feira, 14 de agosto de 2006 13:36
  • Bom dia Ragucci, tudo bem..

    Cara da uma olha neste post, que eu tive duvida e como eu conseguir resolver atráves co "case",  acho que tmabém irar resolver seu problema.

    http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=620629&SiteID=21

    Abs.Wgner

    segunda-feira, 14 de agosto de 2006 13:45
  • Na verdade a query é bem simples (no sql 2005),

    Você deve pivotizar todos os Lotes em uma temporária ou tabela variável.

    Depois fazer um join desta tabela com a tabela pivotizada.

    Procure por Pivot / Unpivot no SQL 2005.

    quarta-feira, 23 de agosto de 2006 21:43
  • Isso ajudaria?

    PedidoID    ProdutoID   Lote1       Lote2

    ----------- ----------- ----------- -----------

    1           1           1           2

    DECLARE @varTable table(
          EntradaID int,
          PedidoID int,
          ProdutoID int,
          Lote int); 

    INSERT INTO @varTable (EntradaID, PedidoID, ProdutoID, Lote) VALUES (1, 1, 1, 1)

    INSERT INTO @varTable (EntradaID, PedidoID, ProdutoID, Lote) VALUES (2, 1, 1, 2)

     

    SELECT

       PedidoID, ProdutoID,

       Lote1 = [1],

       Lote2 = [2]

    INTO #lotePivotTable

    FROM

       @varTable

    PIVOT (

       SUM(Lote)

       FOR Lote IN ([1], [2])

    )  as pivotTable

     

    SELECT PedidoID, ProdutoID, SUM(Lote1) Lote1, SUM(Lote2) Lote2

    FROM #lotePivotTable

    GROUP BY PedidoID, ProdutoID

     

    DROP TABLE #lotePivotTable

     

    quinta-feira, 24 de agosto de 2006 13:26