Selecionar Último data do registro da tabela vendas
16/06/2020
0
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
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
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
16/06/2020
Emerson Nascimento
17/06/2020
Marcos Junior
/*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
Clique aqui para fazer login e interagir na Comunidade :)