oracle sql错误:不同的情况

Posted

技术标签:

【中文标题】oracle sql错误:不同的情况【英文标题】:oracle sql error:distinct case 【发布时间】:2017-04-06 22:15:07 【问题描述】:

我正在尝试从 oracle 数据库中选择一个不同的列,我的代码是:

select ID,distinct case when DM='ST1B' then MC else DM end from D_DZDY

但是,它不起作用。如果我删除“distinct”,它会起作用: enter image description here

任何人都可以帮助我解决这个问题吗?非常感谢! :D

【问题讨论】:

您使用的DISTINCT 语法错误。请提供一些虚拟数据以及您的预期结果。 您在寻找select distinct ID,case when DM='ST1B' then MC else DM end from D_DZDY;吗? 如果您有 10 行具有相同的 CASE 值,您希望看到什么 ID? 【参考方案1】:

语法是select distinct。单个列上没有 distinct 函数或运算符。

也许你打算:

select distinct ID, (case when DM = 'ST1B' then MC else DM end)
from D_DZDY;

这将返回不同的 idcase 表达式对。

【讨论】:

CASE 周围不需要括号 @DuduMarkovitz 。 . .我总是把case 放在括号里。我发现更容易看到 case 的结束位置,尤其是当它们嵌套时 评论是给OP/读者的。由于这是对 OP 代码的另一项更改,因此必须澄清这只是表面上的更改。【参考方案2】:

DISTINCT OPERATE ON ROW,你应该使用这个语法:

select distinct  ID,(case when DM='ST1B' then MC else DM end) from D_DZDY

如果您只想要案例陈述的延期值,您可以使用它

select distinct  (case when DM='ST1B' then MC else DM end) from D_DZDY

【讨论】:

CASE 周围不需要括号 无需对我们大喊大叫。请修复你的大写锁定键,它坏了

以上是关于oracle sql错误:不同的情况的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 异常错误处理

Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”

oracle中怎么获得sql语句的错误信息

递归sql级别1出现错误

Oracle不同版本执行相同SQL语句,结果不一样,请大神赐教

Oracle sql 错误 ora-01722 无效数字 ora-02063 前行来自