ORACLE SQL开发where子句之case-when

    湖南长沙一地市医保数据抽取要求从结果集中排除掉城市职工(61)就医方式住院(61),城市居民31就医方式住院(21)的数据。其实,这一业务逻辑实现,可以
那scott方案下的数据表emp做实验。
   我要取的全部结果集:

   那我要排除掉部门30中的WARD和部门20中的ADAMS,该怎么实现呢?其实很简单,可以使用结果集做差,如下所示:

    其实,使用where子句的case-when有更优雅的实现方式:

   对比结果集的minus和where子句的case-when,前者的实现逻辑好理解就是从总的结果集中排除不要的结果,
后者实现是取符合要求的数据,就性能而言个人觉得第二种更好、代码也更优雅。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以,在Oracle中,CASE语句可以用在WHERE子句中作为条件表达式,例如: ``` SELECT * FROM table_name WHERE CASE column_name WHEN 'value1' THEN 1 WHEN 'value2' THEN 2 ELSE 3 END = 2; ``` 这个查询将返回 `column_name` 为 'value2' 的行,因为 `CASE` 表达式的结果等于 2。 ### 回答2: 在Oracle中,Where语句用于限制查询的结果合,通过指定特定的条件来过滤数据。Where语句通常使用比较操作符(如等于、不等于、大于、小于等)来判断条件是否成立。 在Where语句后加入Case When语句是合法且常见的做法。Case When语句可以用于在Where语句中根据不同的条件应用不同的逻辑。它类似于一个条件表达式,根据满足或不满足特定条件返回不同的值或执行不同的操作。 例如,假设有一个员工表,其中有一个salary字段,我们想查询薪水大于5000的员工,并且将薪水大于10000的员工标记为高薪水,可以使用以下SQL语句: SELECT employee_name, salary, CASE WHEN salary > 10000 THEN '高薪水' ELSE '普通薪水' END AS 薪水等级 FROM employees WHERE salary > 5000; 在这个例子中,Where语句限制了查询结果只包含薪水大于5000的员工。Case When语句用于根据salary字段的值返回相应的薪水等级,如果薪水大于10000,则返回'高薪水',否则返回'普通薪水'。最后,查询结果会显示员工姓名、薪水和薪水等级。 因此,总结回答你的问题,是的,可以在Oracle的Where语句后加入Case When语句来根据不同条件应用不同的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值