【TechTarget中国原创】问:我想在SQL CASE表达式中返回THEN语句的多个值:
SELECT c.company_code, c.com_inactive_flag, e.emp_no FROM company c, employees e WHERE c.com_code = e.com_code AND e.emp_status in ( CASE c.com_inactive_flag WHEN 'N' THEN 'A' WHEN 'Y' THEN 'B,C' END ) |
如果标记为N,所有检索的员工都属于A类情况,否则就是B或C的。但是由于我的是'B,C',所以就不能返回任何值。有没有一种办法使我能放入'B,C'而不是'B'这个值呢?
答:是的,有这种办法。在这种情况下,用布尔逻辑可能更容易解决一些。结合ANDs和ORs以及括号中嵌入的条件,你就可以在SQL中执行任何的命令。
SELECT c.company_code , c.com_inactive_flag , e.emp_no FROM company c INNER JOIN employees e ON e.com_code = c.com_code AND ( ( c.com_inactive_flag = 'N' AND e.emp_status = 'A' ) OR ( c.com_inactive_flag = 'Y' AND e.emp_status IN ('B','C') ) ) |