› Fóruns › SQL e PL/SQL › Dúvida subselect com max e agrupamento › Dúvida subselect com max e agrupamento
@rman
A consulta não é muito complicada, preciso retornar as seguintes colunas:
ITEM_PED.NUM_ORCAMENTO AS NUM_ORCAMENTO,
ITEM_PED.CD_ITEM_PEDIDO AS CD_ITEM_PEDIDO,
ITEM_PED.CD_PRODUTO AS CD_PRODUTO,
ITEM_PED.NUM_PEDIDO AS NUM_PEDIDO,
ITEM_PED.QTD_ITEM AS QTD_ITEM,
TGRE.VIG_GARANTIA_ESTENDIDA,
TRANS.CD_TRANSACAO_GARANTECH,
TRANS.DT_TRANSACAO
O problema é que existem registros duplicados quanto a NUM_ORCAMENTO na tabela TAB_TRANSACAO_GARANTECH porém com horários diferentes para a coluna DT_TRANSACAO
neste caso eu usei um subselect na junção da tabela informando para trazer apenas o registro mais atual com a função max. Mesmo assim não está funcionando, continua trazendo mais de um registro quando eu preciso apenas do mais atual.
Tentei remover esta o subselect da junção e colocar na cláusula where da consulta principal mas mesmo assim não funcionou.
JOIN TAB_TRANSACAO_GARANTECH TRANS
ON (ITEM_PED.NUM_ORCAMENTO = TRANS.NUM_ORCAMENTO
AND ITEM_PED.CD_ITEM_PEDIDO = TRANS.CD_ITEM_PEDIDO
AND TRANS.NUM_ORCAMENTO IN (
SELECT NUM_ORCAMENTO FROM TAB_TRANSACAO_GARANTECH
WHERE EXISTS(
SELECT MAX(DT_TRANSACAO), NUM_ORCAMENTO FROM TAB_TRANSACAO_GARANTECH
WHERE NUM_ORCAMENTO = 957517 GROUP BY NUM_ORCAMENTO
)
)