怎样在SQL CASE表达式中返回THEN语句的多个值

 
   | |

导读:作者主要回答了怎样在SQL CASE表达式中返回THEN语句的多个值的问题。专家建议用布尔逻辑可能更容易解决一些。结合ANDs和ORs以及括号中嵌入的条件,你就可以……

关键词:Oracle SQL CASE THEN语句

正在加载数据... 【TechTarget中国原创】我想在SQL CASE表达式中返回THEN语句的多个值……,如果标记为N,所有检索的员工都属于A类情况,否则就是B或C的。但是由于我的是'B,C',所以就不能返回任何值。有没有一种办法使我能放入'B,C'而不是'B'这个值呢?

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

 
查看全文
 
 
 
 
 

Oracle SQL

 
SELECT子句通常是一个SELECT语句的第一个子句。它标识出你所想要包含到结果集中的列。这些列是从在FROM子句中指定的基表中返回的。
 
没有ORDER BY子句,Oracle不会保证行显示的顺序。它们可能是按照你想要的顺序排列,但也可能不是。
 
Toad For Oracle的产品策略就是为Oracle开发一款工具,它可以满足不同人的不同需求,比如DBA、开发人员、分析师以及管理者等等。
 
据Toad For Oracle产品经理John Pocknell所说,这次发布的Toad 10致力于生产力的概念,其中包括了:灵活性、易用性、自动化和协作等内容。
 
如何找到会话中正在运行的存储过程?你需要找到会话中正在运行的SQL语句,存储过程就是以SQL语句的形式出现的。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录