Oracle
 sql >> Database >  >> RDS >> Oracle

Interrogazione per ottenere il record più recente e (in caso di parità) con il valore o la percentuale maggiore per carta e servizio

Non hai menzionato se la colonna type varia per una determinata card,service coppia. Supponendo che sia lo stesso, dovresti essere in grado di ottenere il risultato con un select annidato , incluso type nella select interna e 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
    );

Demo