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