Bạn chưa đề cập đến việc cột type thay đổi cho một card,service nhất định đôi. Giả sử nó giống nhau, bạn sẽ có thể nhận được kết quả bằng select lồng nhau , bao gồm type trong select bên trong và nhóm 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
);