Pular para o conteúdo

Fóruns SQL e PL/SQL Dúvida subselect com max e agrupamento Dúvida subselect com max e agrupamento

#106187
Gustavo S Coelho
Participante

    @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
    )
    )