Array
(
)

Consulta em tabela SQL Server

Jluiz Gsantos
   - 30 jan 2006

Pessoal,

Meu problema é o seguinte. Tenho uma tabela que armazena os movimentos de estoque: MovEstoque. Esta tabela contém, entre outros, os campos CodMov (código do movimento), CodProd (código do produto), DataMov (data do movimento), QdeMov (quantidade do movimento) e CustoUnit (Custo unitário). Quero efetuar uma consulta que me retorne o último movimento de cada produto.

Alguém pode me ajudar?

Obrigado

JLuiz

Blumm
   - 31 jan 2006

Olá JLuiz

Tente a seguinte consulta:

Select * From MovEstoque A
Where Exists
(Select 1 From MovEstoque B
Where A.CodProd = B.CodProd
And B.DatMov = (Select Max(DatMov)
From MovEstoque C
Where A.CodProd = C.CodProd)
Order by CodProd

Um Abraço

Jluiz Gsantos
   - 31 jan 2006

Obrigado pela dica, mas não funcionou. A consulta retorna com todos os movimentos e não o último movimentode cada produto.

Emerson
   - 31 jan 2006

essa tabela não tem um identificador único para o registro?

Jluiz Gsantos
   - 31 jan 2006

Infelizmente não. É justamente o que está dificultando a pesquisa. O que poderia servir como identificador único é a utilização de 2 campos: um identifica o movimento propriamente dito (ChvMov) e o outro o item dentro do movimento (ItemMov).

Emerson
   - 31 jan 2006

uma consulta assim:

#Código

Select
  *
From
  MovEstoque A
Where
  A.DatMov = (Select
                max(B.DatMov)
              From
                MovEstoque B
              Where B.CodProd = A.CodProd)
Order by
  A.CodProd


retornaria os últimos movimentos de um determinado produto...
mas para retornar o último seria melhor se o registro tivesse um campo ID...

Jluiz Gsantos
   - 01 fev 2006

Também não funcionou. Acho que só mesmo utilizando procedure. Em toda caso, obrigado pela tentativa.

Jluiz Gsantos
   - 01 fev 2006

Também não funcionou. Acho que só mesmo utilizando procedure. Em todo caso, obrigado pela tentativa.