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á.
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
Curtir tópico
+ 0
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.
Grande abraço
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
Responder
Mais Posts
06/06/2017
Adriano
Bom dia,
Precisava de mais colunas. Aí descobri como fazer por CTE.
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
Clique aqui para fazer login e interagir na Comunidade :)