Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tôi cần trợ giúp chuyển đổi truy vấn T-SQL sang truy vấn được Oracle hỗ trợ

Vì bây giờ bạn đang nhân điểm, trước tiên chúng ta cần quyết định xem điểm số là bao nhiêu nếu các mã không khớp nhau. Tôi cho rằng, nó phải là 0. Tiếp theo, chúng ta nên chia tất cả các mã có thể thành các nhóm độc lập, nghĩa là kết quả không phụ thuộc vào các thành viên nhóm khác. Đây là (1,2,4) và (8). Và xác định quy tắc cho mọi nhóm. Vì vậy,

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. Hướng dẫn từng bước để cài đặt hộp ảo Oracle

  2. tên bảng động trong con trỏ

  3. Làm thế nào để triển khai trình kích hoạt này trên Oracle SQL?

  4. SQL:nhận giá trị tối đa của một cột và các cột khác tương ứng

  5. ORA-28113:vị từ chính sách có lỗi