sql >> Databasteknik >  >> RDS >> Oracle

Jag behöver hjälp med att konvertera T-SQL-fråga till Oracle-stödd fråga

Eftersom du nu multiplicerar poäng, måste vi först bestämma vad poängen är om ingen koder matchas. Jag antar att det borde vara 0. Därefter bör vi dela upp alla möjliga koder i oberoende grupper, det vill säga vilka resultat inte beror på andra gruppmedlemmar. Här är de (1,2,4) och (8). Och definiera regeln för varje grupp. Så

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. Oracle nummer och varchar går samman

  2. MySQL-servern har försvunnit vid UPPDATERING (Enorma QUERY, cirka 85MB) med mysli PHP

  3. Anropar modellfunktion i vyn kodantändare

  4. Kopiera två kolumner från en tabell till en annan, men bara unika värden