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

Potrzebuję pomocy w konwersji zapytania T-SQL na zapytanie obsługiwane przez Oracle

Ponieważ teraz mnożysz wyniki, najpierw musimy zdecydować, jaki jest wynik, jeśli żaden z kodów nie zostanie dopasowany. Przypuszczam, że powinno być 0. Następnie powinniśmy rozbić wszystkie możliwe kody na niezależne grupy, czyli takie, których wyniki nie zależą od innych członków grupy. Oto one (1,2,4) i (8). I zdefiniuj zasady dla każdej grupy. Więc

SELECT [id] ,[name],r = 
  -- At least one of values needed to get score > 0
  MAX(CASE WHEN code IN (1,2,4, 8) THEN 1.0  ELSE 0.0 END) *
  -- Now rules for every independent set of codes. Rule should return score if matched or 1.0 if not matched
  -- (1,2,4)
  coalesce(MAX(CASE WHEN [code] IN (1,2,4) THEN 0.70 END), 1.0 ) *
  -- (8) 
  coalesce(MAX(CASE WHEN [code] IN (8) THEN 0.75 END), 1.0)
  -- more ?
  FROM  (values (1, 'ali',4)
        ,(1, 'ali',1)
        ,(1, 'ali',8)
        ,(1, 'ali',2)
        ,(2, 'sunny',1)
     ,(4, 'arslan',4)) as t(id, name,code)
  GROUP BY id, name;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między „RRRR” a „RRRR” w Oracle SQL?

  2. Konwersja kolumn na wiersze w Oracle

  3. Różnica UTL_SMTP między DATA, WRITE_DATA i WRITE_RAW_DATA

  4. Czy następujące zapytanie jest możliwe z SQL Pivot?

  5. Czy istnieje sposób na użycie DBMS_Alert do powiadomienia aplikacji Wininform o zmianie bazy danych?