简体   繁体   English

在何处条件下如何使用案例陈述?

[英]How to use case statement in where condition?

I need to use the CASE statement in the WHERE clause like: 我需要在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)

I'm getting, 'missing right parenthesis' How to include such conditions according to a value in a column? 我正在“缺少正确的括号”如何根据列中的值包括这些条件?

The predicate of a CASE expression (ie what comes after THEN ) has to be a value, rather than logic. CASE表达式的谓词(即THEN之后的谓词)必须是值,而不是逻辑。 You can rephrase your WHERE clause as follows: 您可以重新定义您的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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM