Selecionar Último data do registro da tabela vendas

16/06/2020

0

Olá pessoal , preciso de um ajuda na seguinte situação:

No banco existe uma tabela de preços de venda para cada produto, quando um novo preço é atualizado, um novo registro é criado, eu preciso consultar o último preço de venda de um produto nesta tabela, porém deverá listar somente a última data mais atual.

Conforme demostrado no select abaixo, este produto possui 9 registro na tabela de venda, ou seja, o preço de venda foi atualizado 9 vezes em datas diferentes, quando executo o select abaixo, o resultado não traz apenas 1 data, aparece todos os registros, porém preciso somente do registro da data mais atual, alguém pode ajudar?

SELECT MAX(TAB.DTVIGOR), EXC.CODPROD, EXC.VLRVENDA
FROM
TGFEXC EXC,
TGFTAB TAB

WHERE EXC.NUTAB = TAB.NUTAB
AND EXC.CODPROD = 1364
GROUP BY EXC.CODPROD, EXC.VLRVENDA

O resultado abaixo é apresentado:

MAX(TAB.DTVIGOR) CODPROD VLRVENDA
08/10/2018 00:00 1364 20,34
15/02/2019 00:00 1364 20,70
30/04/2019 00:00 1364 23,91
03/05/2019 00:00 1364 20,33
24/09/2019 00:00 1364 20,50
24/10/2019 00:00 1364 21,12
24/01/2020 00:00 1364 23,00
30/03/2020 00:00 1364 24,03
28/05/2020 00:00 1364 27,50

Conforme demostrado acima eu preciso apenas que liste a data mais atual deste registro que foi:
MAX(TAB.DTVIGOR) CODPROD VLRVENDA
28/05/2020 00:00 1364 27,50
Leonardo Nascimento

Leonardo Nascimento

Responder

Posts

16/06/2020

Emerson Nascimento

SELECT
   TAB.DTVIGOR,
   EXC.CODPROD,
   EXC.VLRVENDA
FROM
   TGFEXC EXC
LEFT JOIN
   TGFTAB TAB ON TAB.NUTAB = EXC.NUTAB
INNER JOIN
   (SELECT NUTAB, MAX(DTVIGOR) MAXDATA
    FROM TGFTAB
    GROUP BY NUTAB) TB ON TB.NUTAB = TAB.NUTAB AND TB.MAXDATA = TAB.DTVIGOR
WHERE
   EXC.CODPROD = 1364

só não entendi como você encontra o produto em TGFTAB
Responder

16/06/2020

Leonardo Nascimento

SELECT
   TAB.DTVIGOR,
   EXC.CODPROD,
   EXC.VLRVENDA
FROM
   TGFEXC EXC
LEFT JOIN
   TGFTAB TAB ON TAB.NUTAB = EXC.NUTAB
INNER JOIN
   (SELECT NUTAB, MAX(DTVIGOR) MAXDATA
    FROM TGFTAB
    GROUP BY NUTAB) TB ON TB.NUTAB = TAB.NUTAB AND TB.MAXDATA = TAB.DTVIGOR
WHERE
   EXC.CODPROD = 1364

só não entendi como você encontra o produto em TGFTAB


Olá Emerson, a TGFTAB possui a coluna da data "DTVIGOR' e por isso eu relaciono ela com a TGFEXC que possue o código do produto.

Emerson este select que você fez não apresentou somente o valor da última data, apresentou todos os valores conforme demonstrado abaixo:
DTVIGOR CODPROD VLRVENDA
08/10/2018 00:00 1364 20,34
30/11/2018 00:00 1364 20,70
13/02/2019 00:00 1364 20,70
15/02/2019 00:00 1364 20,70
04/03/2019 00:00 1364 20,33
20/03/2019 00:00 1364 20,33
30/04/2019 00:00 1364 23,91
03/05/2019 00:00 1364 20,33
24/09/2019 00:00 1364 20,50
24/10/2019 00:00 1364 21,12
24/01/2020 00:00 1364 23,00
20/03/2020 00:00 1364 24,03
30/03/2020 00:00 1364 24,03
28/05/2020 00:00 1364 27,50

Preciso que apresente apenas a última data atualizada que é:
DTVIGOR CODPROD VLRVENDA
28/05/2020 00:00 1364 27,50
Responder

16/06/2020

Emerson Nascimento

Você pode publicar a estrutura destas duas tabelas e um exemplo de seu conteúdo?
Responder

17/06/2020

Marcos Junior

Bom dia... Nobre Leonardo Nascimento tenta isso para ver se dar certo.:

/*Se você usar o FireBrid */
SELECT FIRST 1
TAB.DTVIGOR,
EXC.CODPROD,
EXC.VLRVENDA
FROM TGFEXC EXC,
TGFTAB TAB
WHERE EXC.NUTAB = TAB.NUTAB
AND EXC.CODPROD = 1364
ORDER BY TAB.DTVIGOR DESC

/*Se você usar o Sql Server */
SELECT TOP 1
TAB.DTVIGOR,
EXC.CODPROD,
EXC.VLRVENDA
FROM TGFEXC EXC,
TGFTAB TAB
WHERE EXC.NUTAB = TAB.NUTAB
AND EXC.CODPROD = 1364
ORDER BY TAB.DTVIGOR DESC

/*Se você usar o MySql */
SELECT TAB.DTVIGOR,
EXC.CODPROD,
EXC.VLRVENDA
FROM TGFEXC EXC,
TGFTAB TAB
WHERE EXC.NUTAB = TAB.NUTAB
AND EXC.CODPROD = 1364
ORDER BY TAB.DTVIGOR DESC LIMIT 1
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