Selecionar última linha da consulta

04/06/2017

0

Boa noite prezados,

Fiz uma consulta SQL e preciso que retorne apenas o valor do último sequencial (sequencial) na data (datamovimento) para cada local de estoques (codloc), ou seja:

Exemplo da consulta


Query:

SELECT A.DATAMOVIMENTO ,
A.IDPRD ,
A.SEQUENCIAL ,
A.CODLOC ,
A.SALDOMOV ,
A.TOTALMOV ,
A.CUSTOMEDMOV ,
B.NOMEFANTASIA ,
C.CODTB3FAT ,
CASE WHEN CODTB3FAT = '001' THEN 'Medicamentos Hospitalares'
WHEN CODTB3FAT = '002' THEN 'Materiais Hospitalares'
ELSE C.CODTB3FAT
END CLASSIFICAÇÃO
FROM TRELSLD AS A
INNER JOIN tproduto AS B ON A.idprd = B.idprd
INNER JOIN TPRODUTODEF AS C ON A.IDPRD = C.IDPRD
AND A.CODCOLIGADA = C.CODCOLIGADA
WHERE A.CODFILIAL = 2
AND CODLOC IN ( 01.004, 01.001 )
AND a.IDPRD = 672
ORDER BY DATAMOVIMENTO


Agradeço muito desde já.
Adriano

Adriano

Responder

Post mais votado

05/06/2017

Boa noite Adriano.

Essa query abaixo deve retornar o que você precisa.
Porém se precisar dos demais campos, teremos que dar uma mexida nela.


SELECT 
	A.DATAMOVIMENTO ,
	A.CODLOC ,
	MAX(A.SEQUENCIAL) AS SEQUENCIAL,
FROM
	TRELSLD AS A
WHERE 
	A.CODFILIAL = 2
	AND CODLOC IN ( 01.004, 01.001 )
	AND a.IDPRD = 672
GROUP BY
	A.DATAMOVIMENTO ,
	A.CODLOC



Grande abraço

Luiz Santos

Luiz Santos
Responder

Mais Posts

05/06/2017

Adriano

Boa noite. Obrigado por me ajudar!
Responder

06/06/2017

Luiz Santos

Bom dia Adriano.
Mas resolveu seu problema?

Grande abs
Responder

06/06/2017

Adriano

Bom dia,

Precisava de mais colunas. Aí descobri como fazer por CTE.

with rownumber as(
select
ROW_NUMBER() over(partition by a.idprd, a.codloc order by a.sequencial desc)as rownumber
,A.SEQUENCIAL 
,A.DATAMOVIMENTO
,A.IDPRD							    
,A.CODLOC
,A.SALDOMOV
,A.TOTALMOV
,A.CUSTOMEDMOV
,B.NOMEFANTASIA
,case when C.CODTB3FAT='001' then 'Medicamentos'
	  when C.CODTB3FAT='002' then 'Materiais' 
else C.CODTB3FAT end Tipo
from TRELSLD as A
inner join tproduto AS B
on A.idprd=B.idprd
inner join TPRODUTODEF AS C
on A.IDPRD=C.IDPRD AND A.CODCOLIGADA=C.CODCOLIGADA
WHERE A.CODFILIAL=2  and a.IDPRD IN (661, 662) and A.DATAMOVIMENTO <='2017-06-05 00:00:00.000' )
select * from rownumber where rownumber=1
Responder

06/06/2017

Luiz Santos

BOA.

Grande abs
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar