olá tenho uma tabela que grava todas as alteraçoes de preços dos produtos, eu quero que o script me retorne todos os produtos com o ultimo preço alterado.
ex: o produto codigo 4437 teve tres alterações foi colocado 0,90 no dia 19/07/2012 depois foi novamente alterado para 0,90 no dia 21/07/2012 e depois foi alterado para 0,99 no dia 17/09/2012.
quando eu executo esse codigo ele me retorna dois resultados um para 0,90 e outro para 0,99 mas eu preciso que retorne apenas 0,99 que foi a ultima alteração.
SELECT a.seqproduto,a.preço, MAX(a.dtahoralteracao) As UltimaData
FROM prodlogpreco a where
a.nroempresa=60
and a.seqproduto=4437
GROUP BY a.seqproduto,a.preço ;
quando eu executo o script abaixo ele me tras apenas a ultima alteração mas não vem o campo preço, porque se eu colocar pra aparecer como da forma acima tenho que fazer o group by com a.seqproduto, a.seqpreco
SELECT a.seqproduto, MAX(a.dtahoralteracao) As UltimaData
FROM mad_prodlogpreco a where
a.nroempresa=60
and a.seqproduto=4437
GROUP BY a.seqproduto ;
Retornar Ultimo preço alterado
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Qui, 31 Jan 2013 2:28 pm
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Sex, 30 Mar 2007 7:26 pm
- Localização: Londrina - PR
Rafael O. Genaro
Se precisar somente do preço e código do produto, você poderia usar o keep:
Para retornar todas as colunas, também poderia fazer:
SELECT a.seqproduto, max(a.preço) keep (dense_rank last order by a.dtahoralteracao) As UltimoPreco
FROM prodlogpreco a where
a.nroempresa=60
and a.seqproduto=4437
GROUP BY a.seqproduto,a.preço
;
select * from
(
SELECT a.*
FROM prodlogpreco a where
a.nroempresa=60
and a.seqproduto=4437
order by a.dtahoralteracao desc
)
where rownum = 1
;
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Qui, 31 Jan 2013 2:28 pm
Bom dia, desculpa pela demora na resposta, porque na época tinha dado errado e tinha conseguido de outra forma, a primeira opção retornou o mesmo resultado que eu estava tendo os dois preços mas a segunda deu perfeito e eu deixei o select como abaixo e me retornou o que eu precisava.
Muito obrigado.
Muito obrigado.
select * from
(
SELECT a.preço,a.dtahoralteracao,a.seqproduto
FROM prodlogpreco a where
a.nroempresa=60
and a.seqproduto=4437
order by a.dtahoralteracao desc
)
where rownum = 1
;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 3 visitantes