sql >> Database teknologi >  >> RDS >> Oracle

Jeg har brug for hjælp til at konvertere T-SQL-forespørgsler til Oracle-understøttet forespørgsel

Da du nu multiplicerer scores, skal vi først beslutte, hvad scoren er, hvis ingen koder matches. Jeg formoder, at det burde være 0. Dernæst bør vi opdele alle mulige koder i uafhængige grupper, det vil sige, at resultater ikke afhænger af andre gruppemedlemmer. Her er de (1,2,4) og (8). Og definer reglen for hver gruppe. 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. Delphi - MySQL Bedste databevidste komponenter at bruge

  2. Nulstilling af MySQL root-adgangskode, når den nuværende adgangskode ikke er kendt

  3. SQL datakontrolsprog

  4. Classic ASP + Motobit Pure ASP Upload + UTF-8 Charset