如何在 SQL 中编写 if else if 条件 |甲骨文 |

Posted

技术标签:

【中文标题】如何在 SQL 中编写 if else if 条件 |甲骨文 |【英文标题】:How to write if else if condition in SQL | Oracle | 【发布时间】:2021-12-02 12:27:49 【问题描述】:

我有点卡住需要编写 SQL if else if 对于下面的逻辑

仅作为 SQL 的基础知识

下面的逻辑需要导出到SQL查询

if depcost <> empcost and empcourseid in ('A','B') 
then

   empnfees=(empvar / empdar) * empcost

else if depcost <> empcost and empcourseid <> 'A'
then
     empnfees=empcost
else
     empnfees=depcost

【问题讨论】:

这些都是您要查询的表中的所有列吗? @Mureinik : 是的,他们都在表中:员工 【参考方案1】:

使用CASE表达式,我们可以试试:

CASE WHEN depcost <> empcost AND empcourseid IN ('A', 'B')
     THEN (empvar / empdar) * empcost
     WHEN depcost <> empcost AND empcourseid <> 'A'
     THEN empcost
     ELSE depcost END AS empnfees

【讨论】:

谢谢蒂姆让我试试【参考方案2】:

如果您可以拥有NULL 值,那么(因为NULL &lt;&gt; something 永远不会为真):

CASE
WHEN (  depcost <> empcost
     OR (depcost IS NULL AND empcost IS NOT NULL)
     OR (depcost IS NOT NULL AND empcost IS NULL)
     )
AND  empcourseid in ('A','B')
THEN empvar / empdar * empcost
WHEN (  depcost <> empcost
     OR (depcost IS NULL AND empcost IS NOT NULL)
     OR (depcost IS NOT NULL AND empcost IS NULL)
     )
AND  (  empcourseid <> 'A'
     OR empcourseid IS NULL
     )
THEN empcost
ELSE depcost
END AS empnfees

【讨论】:

以上是关于如何在 SQL 中编写 if else if 条件 |甲骨文 |的主要内容,如果未能解决你的问题,请参考以下文章

如何在一行中编写嵌套的 if-elif-else 条件? [复制]

如何在 Python 中编写 if-else 条件(Google App Engine)

如何在 Haml 中编写 if 条件?

如何在 Snowflake 中编写等效的 IF ELSE adhoc sql 查询

SQL语句中能否含有if....else...判断语句?

Postgres:if-else 条件取决于提示,在通过 \i 调用的 .sql 文件中