Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EliseuFirmino

selecionar data

Recommended Posts

Boa tarde pessoal !

Estou com uma dúvida no seguinte código:

 

select
a.CD_MATERIAL,
(select x.ds_material from material x where x.cd_material = a.cd_material) ds_material,
max(a.dt_movimento_estoque) ultimo_mov_material

from movimento_estoque a

where a.CD_LOCAL_ESTOQUE = 11

group by a.CD_MATERIAL
order by max(a.dt_movimento_estoque) desc

 



No qual eu pego a última data de movimento de cada produto. Meu problema é na hora de selecionar um período entre as datas, por exemplo:

 

where max(a.dt_movimento_estoque) between :data_ini and :data_fin

 



Desta forma me retorna um erro, se eu fizer desta outra forma:

 

where a.dt_movimento_estoque between :data_ini and :data_fin

 



O select não é executado de forma satisfatória, retornando outras datas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente

 



select a.CD_MATERIAL, 
       (select x.ds_material 
        from material x 
        where x.cd_material = a.cd_material) ds_material, 
       max(a.dt_movimento_estoque) ultimo_mov_material 
from movimento_estoque a 
where a.CD_LOCAL_ESTOQUE = 11 
and a.dt_movimento_estoque between :data_ini and :data_fin
group by a.CD_MATERIAL order by max(a.dt_movimento_estoque) desc

O max será o maior entre as datas selecionados no intervalo passado

 

Se passado 01/01/2014 a 14/01/2014 é a maior data for ontem (por exemplo)

será exibido 13/01/2014




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei, mas tive o mesmo problema, não estou conseguindo pegar o resultado de max(a.dt_movimento_estoque) e retirar as datas entre o período que eu quero. Acabo selecionando várias datas de movimento de um mesmo produto e não a última data de movimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi, dá um exemplo simples do que se quer com dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O #2 deveria funcionar.

 

O Campo é do tipo DATE ?

 

Como o Parâmetro está sendo passado ?

 

Para se certificar faça

 

select a.CD_MATERIAL,
       (select x.ds_material
        from material x
        where x.cd_material = a.cd_material) ds_material,
       max(a.dt_movimento_estoque) ultimo_mov_material
from movimento_estoque a
WHERE A.CD_LOCAL_ESTOQUE = 11
AND A.DT_MOVIMENTO_ESTOQUE BETWEEN to_date('14/07/2013','dd/mm/yyyy') AND  
                                   to_date('14/01/2014','dd/mm/yyyy'
group by a.CD_MATERIAL
order by max(a.dt_movimento_estoque) desc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é do tipo DATE. O #2 e o #3 me retornam todas as datas de movimento que cada material tem dentro do espaço de tempo estipulado. O que não consigo fazer é que me retorne apenas a última data de movimento dentro do espaço de tempo estipulado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O max faz isto.

 

Troque tb este select co o coluna por um join.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.