2017-08-03 64 views
0

我需要使用CASE語句的WHERE子句中,如:如何在有條件的地方使用case語句?

WHERE p.resource_qry_seq = b.resource_qry_seq 
AND p.resource_id = b.resource_id 
AND (CASE 
     WHEN b.flexible_time IS NULL THEN 
      ((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)) 
     ELSE 
       b.activity_start > p.late_start 
     END) 

我越來越「缺少右括號」如何根據一列中的值包括這樣的條件?

回答

2

CASE表達式(即THEN之後的表達式)的謂詞必須是一個值,而不是邏輯。您可以修改您的WHERE條款,如下所示:

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))