Página 1 de 1

Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 11:07 am
por gab26
Bom dia a todos, sou novo aqui, busco uma ajuda que não estou conseguindo resolver espero que alguém consiga me ajudar.

preciso valorizar o inventario da empresa em que trabalho, pra isso vou pegar o ultimo valor dos itens, estava usando o MAX, mas percebi que se fizesse isso ele iria me retorna o maior preço e não o ultimo cadastrado na tabela então mudei o MAX pra coluna de data, só que ele me traz varias linhas de resultados, e preciso apenas da ultima mas ainda com o campo de código e valor dos itens, pra depois jogar em uma planilha, vou postar o código aqui em baixo

código:

Selecionar tudo

select irec.pro_in_codigo Codigo, irec.rci_re_vlunitario Valor_unitario, max(irec.rcb_dt_documento) Data

from mgadm.est_itensreceb irec

where irec.pro_in_codigo = 701

group by irec.pro_in_codigo, irec.rci_re_vlunitario
peço por favor que se puderem me deem uma luz

obrigado.

Re: Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 12:28 pm
por spernega
Boa tarde,

Veja se assim ajuda

Selecionar tudo

select irec.pro_in_codigo Codigo, irec.rci_re_vlunitario Valor_unitario, irec.rcb_dt_documento Data
from   mgadm.est_itensreceb irec
where  irec.rcb_dt_documento = (select max(rcb_dt_documento)
                                from   mgadm.est_itensreceb
                                and    pro_in_codigo = 701)
and    irec.pro_in_codigo = 701;

Desde que não tenha mais de um lançamento no mesmo dia para produto, ou que a data seja datetime.

Re: Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 1:12 pm
por gab26
spernega escreveu:Boa tarde,

Veja se assim ajuda

Selecionar tudo

select irec.pro_in_codigo Codigo, irec.rci_re_vlunitario Valor_unitario, irec.rcb_dt_documento Data
from   mgadm.est_itensreceb irec
where  irec.rcb_dt_documento = (select max(rcb_dt_documento)
                                from   mgadm.est_itensreceb
                                and    pro_in_codigo = 701)
and    irec.pro_in_codigo = 701;
Desde que não tenha mais de um lançamento no mesmo dia para produto, ou que a data seja datetime.
spernega, Boa tarde

cara muito obrigado me ajudou de mais, não imaginava que era tão simples e que ia ser respondido tão rapido valeu mesmo

Re: Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 1:22 pm
por gab26
spernega, Boa tarde

só uma coisa eu preciso de vários itens ao mesmo tempo, não sabia que ia mudar o resultado final desculpa,
mas pelo o que pude observar ao colocas todos os itens, ele traz só o item com a ultima data que seria hoje.

consegue me ajudar?

valeu obrigado.

Re: Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 1:31 pm
por spernega
Claro, veja se da certo

Selecionar tudo

select irec.pro_in_codigo Codigo, irec.rci_re_vlunitario Valor_unitario, irec.rcb_dt_documento Data
from   mgadm.est_itensreceb irec
where  irec.rcb_dt_documento = (select max(rcb_dt_documento)
                                from   mgadm.est_itensreceb
                                and    pro_in_codigo = irec.pro_in_codigo);

Re: Ultimo registro da tabela

Enviado: Qua, 04 Jan 2017 2:43 pm
por gab26
muito obrigado resolvido o problema

Re: Ultimo registro da tabela

Enviado: Seg, 26 Nov 2018 1:49 pm
por Ericke_Cruz
Spernega, não sei se ainda está por aí... mas montei o código exatamente da mesma forma que você havia orientado, porém está retornando o seguinte erro:

ORA-00907: parêntese direito não encontrado

Abaixo segue o código:

Selecionar tudo

SELECT *
  FROM E210MVP A
 WHERE A.DATMOV = (SELECT MAX(DATMOV)
                     FROM E210MVP
                      AND CODPRO = A.CODPRO)
   AND A.ESTMOV = 'NO'
   AND A.FILDEP = '201'
Quando mudo o parêntese direito de lugar, conforme abaixo, ele até me traz algum resultado, mas ainda não é o que preciso, pois neste caso ele busca a última data de movimento e retorna somente o que movimentou naquela data, eu precisava que ele trouxesse o ultimo movimento de cada código independente de em qual data ele ocorreu.

Selecionar tudo

SELECT *
  FROM E210MVP A
 WHERE A.DATMOV = (SELECT MAX(DATMOV)
                     FROM E210MVP)
                      AND CODPRO = A.CODPRO
   AND A.ESTMOV = 'NO'
   AND A.FILDEP = '201'
Peço desculpas se não me fiz entender, primeiro post...

Re: Ultimo registro da tabela

Enviado: Seg, 26 Nov 2018 1:56 pm
por spernega
Boa tarde, to por aqui ainda sim, meio afastado mas na ativa.
Tenta colocar um alias na sub-query

Selecionar tudo

SELECT *
  FROM E210MVP A
WHERE A.DATMOV = (SELECT MAX(b.DATMOV)
                     FROM E210MVP b
                      AND b.CODPRO = A.CODPRO)
   AND A.ESTMOV = 'NO'
   AND A.FILDEP = '201'

Re: Ultimo registro da tabela

Enviado: Seg, 26 Nov 2018 2:47 pm
por DanielNN
Boa tarde,
o problema é que na tua subconsulta não existe a cláusula WHERE. Existe um AND sem o WHERE.

Re: Ultimo registro da tabela

Enviado: Seg, 26 Nov 2018 3:40 pm
por Ericke_Cruz
DanielNN escreveu:Boa tarde,
o problema é que na tua subconsulta não existe a cláusula WHERE. Existe um AND sem o WHERE.
Realmente não tinha percebido... Valeu!!!