oracle sql case语句

Posted

技术标签:

【中文标题】oracle sql case语句【英文标题】:Oracle sql case statement 【发布时间】:2016-01-29 09:27:52 【问题描述】:

我需要一些关于案例陈述的帮助。 我的代码:

select c.name, c.date_entered, i.transaction, i.planned_date,
case (c.date_entered - i.planned_date)
when (c.date_entered - i.planned_date) > 0 then 'YES'
when (c.date_entered - i.planned_date) < 0 then 'NO'
end RESPECT
from company c,transaction i

但它给了我错误 ORA-00907;缺少右括号

谢谢你帮助我。

【问题讨论】:

这是一个 case 表达式,而不是 case 语句。 (它返回一个值。) 不需要加入条件吗? 你好,是的,我在那里有内部连接。请问case exprassion和case statement有什么区别? 如果没有连接条件,你会得到一个cross join,即笛卡尔积! case 表达式返回一个值,通常用作 SQL 语句的一部分。 case 语句没有返回值,用于有条件地执行代码(例如在存储过程中)。 【参考方案1】:
select c.name, c.date_entered, i.transaction, i.planned_date,
       case when c.date_entered - i.planned_date > 0 
            then 'YES'
            when c.date_entered - i.planned_date < 0 
            then 'NO'
       end as RESPECT
from company c, transaction i

您还应该考虑when c.date_entered - i.planned_date = 0 的输出或将其中一种情况更改为&lt;=&gt;=

【讨论】:

您好,非常感谢,它对我有用。谢谢。

以上是关于oracle sql case语句的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql case语句

CASE SQL 语句 oracle 数据库

ORACLE SQL CASE 语句 - 出现错误

Oracle SQL ORA-00907: CASE 语句中缺少右括号错误

Oracle SQL - 添加 CASE 语句后“不是按表达式分组”

LIKE 在 CASE 语句中 Oracle SQL (Sql Developer)