Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie, aby uzyskać najnowszy rekord i (w przypadku remisów) z wyższą wartością lub procentem według karty i usługi

Nie wspomniałeś, czy kolumna type różni się dla danej card,service para. Zakładając, że jest tak samo, powinieneś być w stanie uzyskać wynik za pomocą zagnieżdżonego select , w tym type w wewnętrznym select i 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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz pustą bazę danych za pomocą Asystenta konfiguracji bazy danych Oracle

  2. Korzystanie z wielu zagnieżdżonych zapytań w Oracle DBMS

  3. Jak zmienić język sesji Oracle

  4. Jak połączyć dwie podobne schematy baz danych w PL/SQL?

  5. Przykładowe dane - Problem podczas wykonywania procedury składowanej, która składa się zarówno z instrukcji update, jak i insert