Oracle
 sql >> база данни >  >> RDS >> Oracle

Заявка за получаване на най-новия запис и (в случай на равенство) с по-високата стойност или процент по карта и услуга

Не сте споменали дали колоната type варира за дадена card,service двойка. Ако приемем, че е същото, трябва да можете да получите резултата с вложен select , включително type във вътрешния select и 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
    );

Демо




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте колоните с нулеви стойности

  2. В SQL сървър как мога да направя заявка за колона с времеви печат на Oracle през свързана сървърна връзка?

  3. променете колоната за преименуване на таблица в базата данни на Oracle

  4. Примери за синтаксис за присъединяване на oracle

  5. Върната стойност на oci_parse