首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLSQL条件规则

PLSQL条件规则
EN

Stack Overflow用户
提问于 2018-11-01 14:31:53
回答 2查看 63关注 0票数 1

需要有条件的规则:

代码语言:javascript
复制
IF 
A then currency = ABC
B then currency = ABD
C then currency = ABE
NULL = Returns data from A, B and C but it's currency is ABC

为了实现这个逻辑,我尝试使用3条单独的CASE语句,但这似乎行不通。感谢你的任何帮助

我现在拥有的是:

(尝试了几个变体)

代码语言:javascript
复制
 CASE
             WHEN '&SITE' IS 'A' THEN
                COJ.CURRENCY_CODE IS 'ABC'
         END A,
         CASE
             WHEN '&SITE' IS 'B' THEN
                COJ.CURRENCY_CODE IS 'ABD'
         END B,
         CASE
             WHEN '&SITE' IS NULL 'C' THEN
                COJ.CURRENCY_CODE IS 'ABE'
         END C,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-01 14:47:03

如果使用解码函数语句,则只有B和C生成不同的值然后默认:

代码语言:javascript
复制
 decode(x, 'B', 'ABD', 'C', 'ABE','ABC')
票数 0
EN

Stack Overflow用户

发布于 2018-11-01 15:33:44

您应该坚持使用case表达式:

代码语言:javascript
复制
(CASE WHEN '&SITE' = 'A' THEN 'ABC'
      WHEN '&SITE' = 'B' THEN 'ABD'
      WHEN '&SITE' = 'C' THEN 'ABE'
      ELSE 'ABC'
 END) as currency_code

或者:

代码语言:javascript
复制
(CASE '&SITE' WHEN 'A' THEN 'ABC'
              WHEN 'B' THEN 'ABD'
              WHEN 'C' THEN 'ABE'
              ELSE 'ABC'
 END) as currency_code

CASE是标准的SQL,在所有数据库中都可用,大多数人认为它更清晰。DECODE()在使用标准函数之前对Oracle代码进行了定制。CASE在甲骨文中已经存在了20年。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53103378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档