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;
这将返回不同的 id
和 case
表达式对。
【讨论】:
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错误:不同的情况的主要内容,如果未能解决你的问题,请参考以下文章
Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”