Oracle
 sql >> डेटाबेस >  >> RDS >> 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 में RR बनाम YY

  3. तारीखों के बीच के अंतर को भरने के लिए डुप्लीकेटिंग रिकॉर्ड

  4. Oracle regexp_replace में रेगेक्स द्वारा अल्पविराम से अलग की गई सूची से डुप्लिकेट कैसे निकालें?

  5. मैं Oracle में किसी अन्य डेटाबेस से चयन के रूप में तालिका कैसे बना सकता हूं?