Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser l'instruction case dans la condition where ?

Le prédicat d'un CASE expression (c'est-à-dire ce qui vient après THEN ) doit être une valeur plutôt qu'une logique. Vous pouvez reformuler votre WHERE clause comme suit :

WHERE
    p.resource_qry_seq = b.resource_qry_seq AND
    p.resource_id = b.resource_id AND
    ((b.flexible_time IS NULL AND
        (b.activity_start >= p.activity_start AND b.activity_end < p.activity_end) OR
        (b.activity_start > p.activity_start  AND b.activity_end <= p.activity_end)) OR
    (b.flexible_time IS NOT NULL AND b.activity_start > p.late_start))