Olá pessoal!
Tenho a seguinte consulta!
select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto
ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.
PQ isso?
select idproduto, quantnovo, id as ultID from produtomovimento where id =(select max(id) from produtomovimento)
group by idproduto
acho que deve ser isso o que você quer
[quote=valramos]Olá pessoal!
Tenho a seguinte consulta!
select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto
ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.
PQ isso?
[/quote]
Porque quantnovo não está sendo usado nem para agrupar (no group by) nem com função agregada (max, min, avg, count, etc.). Não dá para saber de qual registro ele vai trazer.
Você quer trazer o último movimento de cada produto?
Sugiro o seguinte:
select idproduto, quantnovo, id as ultId from produtomovimento
where id in (select max(id) from produtomovimento group by idproduto);
[quote=valramos]Olá pessoal!
Tenho a seguinte consulta!
select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto
ela é pra trazer o ultimo registro de cada produto! Só que quando eu executo ele traz o ultimo ID blz. Só que se eu tiver mais de um registro para o mesmo idproduto ele traz a primeira quantidade e nao a ultima junto com o ultimo ID.
PQ isso?
[/quote]
apenas tente incluir o atributo quantnovo na clausula group by :
select idproduto, quantnovo, max(id) as ultID from produtomovimento
group by idproduto, quantnovo
Dessa forma o agrupamento é feito inicialmente para idproduto e quantnovo (sem o risco de como anteriormente acabar sendo feito um produto cartesiano de idproduto e quantnovo).
Obrigado pela ajuda. Tive que fazer um select aninhado! Depois posto o codigo aqui da maneira que fiz pra eventuais consultas.
Resolvido