Ultimo registro da tabela

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qua, 04 Jan 2017 11:07 am

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:
Código: Selecionar todos
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.
gab26

Mensagemem Qua, 04 Jan 2017 12:28 pm

Boa tarde,

Veja se assim ajuda

Código: Selecionar todos
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
Localização: São Paulo - SP

Mensagemem Qua, 04 Jan 2017 1:12 pm

spernega escreveu:Boa tarde,

Veja se assim ajuda

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
gab26

Mensagemem Qua, 04 Jan 2017 1:22 pm

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.
gab26

Mensagemem Qua, 04 Jan 2017 1:31 pm

Claro, veja se da certo

Código: Selecionar todos
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);
spernega
Localização: São Paulo - SP

Mensagemem Qua, 04 Jan 2017 2:43 pm

muito obrigado resolvido o problema
gab26

Mensagemem Seg, 26 Nov 2018 1:49 pm

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:

Código: Selecionar todos
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.

Código: Selecionar todos
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...
Ericke_Cruz

Mensagemem Seg, 26 Nov 2018 1:56 pm

Boa tarde, to por aqui ainda sim, meio afastado mas na ativa.
Tenta colocar um alias na sub-query

Código: Selecionar todos
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'
Editado pela última vez por DanielNN em Seg, 26 Nov 2018 2:42 pm, em um total de 1 vez.
Razão: TAG CODE
spernega
Localização: São Paulo - SP

Mensagemem Seg, 26 Nov 2018 2:47 pm

Boa tarde,
o problema é que na tua subconsulta não existe a cláusula WHERE. Existe um AND sem o WHERE.
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.

Mensagemem Seg, 26 Nov 2018 3:40 pm

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!!!
Ericke_Cruz



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes