Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abfrage zum Abrufen des neuesten Datensatzes und (bei Gleichstand) mit dem höheren Wert oder Prozentsatz nach Karte und Service

Sie haben nicht erwähnt, ob die Spalte type variiert je nach card,service Paar. Angenommen, es ist dasselbe, sollten Sie in der Lage sein, das Ergebnis mit einem verschachtelten select zu erhalten , einschließlich type im inneren select und 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