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

Имам нужда от помощ за преобразуване на T-SQL заявка в поддържана от Oracle заявка

Тъй като сега умножавате резултати, първо трябва да решим какъв е резултатът, ако няма съвпадение на кодове. Предполагам, че трябва да е 0. След това трябва да разделим всички възможни кодове на независими групи, т.е. резултатите да не зависят от членовете на другите групи. Ето ги (1,2,4) и (8). И дефинирайте правилото за всяка група. И така

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. Как мога да комбинирам няколко реда в списък, разделен със запетая в Oracle?

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

  3. Времево клеймо на Oracle с прозрачен превод на стойностите на местната часова зона

  4. ORA-01264 във физическа готовност

  5. Logrotate за почистване на файлове с щампа с дата