【问题标题】:oracle sql error:distinct caseoracle sql错误:不同的情况
【发布时间】: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?

标签: sql oracle


【解决方案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 周围不需要括号
  • 无需对我们大喊大叫。请修复你的大写锁定键,它坏了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多