none
Select RRS feed

  • Pergunta

  •  

    Tenho uma tabela contendo a movimentação de vendas (itens da nota), e outra contendo produtos;

     

    Preciso, pegar a ultima venda de cada produto e listar a quantidade q foi vendida, e o valor da venda.

     

    Alguém pode me ajudar??? consegui fazer mas utilizando uma procedure, gravando dados em tabela temporária...com certeza há um jeito mais fácil

     

     

     

    produto               movimento

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

    codprod (pk)      nronota   (pk)

    descrição           codprod (pk)

                                 qtde

                                 valor

    quarta-feira, 13 de junho de 2007 19:21

Todas as Respostas

  • Bom dia Ric, você pode criar uma Function para fazer isto, dá uma olhada no exemplo:

     

     

    Create Function FN_MovVendas() Returns @Movimentacao Table(CodProd int,Descrição varchar(100),nroNota int,qtde Decimal(18,4),Valor Decimal(18,4)) as

    Begin

                Declare @reg_ini int,

                               @reg_fim int,

                                @Produto int

     

                Declare @tmp_Produto Table(Registro int identity(1,1),Codprod int)

     

                Insert into @tmp_Produto

                Select Distinct CodProd From Produto Order by CodProd

     

                set @reg_ini =1

                set @reg_fim = count(*) from @Tmp_Produto

     

                While @reg_ini <= @reg_fim

                begin

                            insert into @Movimentacao

                            Select Top 1 Produto.Codprod,Produto.Descrição,Nota.NroNota,Nota.qtde as Quantidade,Nota.Valor

                            From Produto

                            Inner Join Movimentacao as Nota On Nota.CodProd = Produto.CodProd and Nota.Codprod = @produto

                            Order by Nota.CodProd Desc

     

                            set @reg_ini = @reg_ini + 1

                end

    end

     

    Return

     

     

     

     

    Para utilizar basta fazer um Select: Select * from FN_MovVendas()

     

     

     

     

     

     

     

    Espero ter ajudado

    quinta-feira, 14 de junho de 2007 11:03
  • Ric,

     

    Através do número da Nota Fiscal você poderia saber qual foi a última venda, pois obrigatóriamente o número da nota vai crescendo com o passar do tempo.

     

    Desta forma, você poderá realizar um Select por produto, mas exibindo o maior de número de nota fiscal por cada produto, algo assim.

     

     

    Select CodProd, Max(NroNota), Qtde From Movimento

    Group by CodProd, Qtde

    quinta-feira, 14 de junho de 2007 11:20
  •  

    Olá Ricpestana,

     

    Não sei se já resolveu seu problema.

     

    Se não tiver resolvido ainda, teste este código:

     

    SELECT

    SELECT P.Descricao, M.Qtde, M.Valor

    FROM Produto P

    INNER JOIN

        ( SELECT CodProd, MAX (NRONota) NRONota

          FROM Movimento

          GROUP BY CodProd

        ) PM ON P.CodProd = PM.CodProd

    INNER JOIN Movimento M ON PM.NRONota = M.NRONota AND PM.CodProd = M.CodProd

     

     Se tiver alguma dúvida, estamos aqui.

     

    Abraço

     

     

    quinta-feira, 14 de junho de 2007 14:26