Oracle
 sql >> Base de données >  >> RDS >> Oracle

Requête pour obtenir l'enregistrement le plus récent et (en cas d'égalité) avec la valeur ou le pourcentage le plus élevé par carte et service

Vous n'avez pas mentionné si la colonne type varie pour un card,service donné paire. En supposant qu'il en soit de même, vous devriez pouvoir obtenir le résultat avec un select imbriqué , y compris type dans le select intérieur et group by .

 SELECT card
    ,service
    ,CASE 
        WHEN type = 'v'
            THEN value
        ELSE perc
        END AS max_result
FROM (
    SELECT card
        ,service
        ,type
        ,MAX(date_t) AS Date_t
        ,MAX(value) KEEP (
            DENSE_RANK FIRST ORDER BY date_t DESC
            ) AS value
        ,MAX(percentage) KEEP (
            DENSE_RANK FIRST ORDER BY date_t DESC
            ) AS perc
    FROM yourtable
    GROUP BY card
        ,service
        ,type
    );

Démo