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.