【问题标题】:Syntax error when I add an additional field to select statement向 select 语句添加附加字段时出现语法错误
【发布时间】:2017-12-06 02:31:12
【问题描述】:

SQL 新手希望获得有关 select 语句的帮助

我可以成功运行这个:

select distinct t.QUALIFIEDORGUNITCODE as DEALERNUMBER, 
       count(distinct(t.TRANSACTIONID)) as TRANSACTION_VOLUME
  from adtdealers.transaction t
  where t.DATECREATED between '01-oct-17' and '01-nov-17'
  group by t.QUALIFIEDORGUNITCODE;

但如果我尝试将另一个字段添加到选择中,我会收到以下错误:

ORA-00936:缺少表达式 00936。00000 -“缺少表达式” *原因:*操作:第 17 行错误,第 105 列:105

select to_char(t.DATECREATED, 'MON-DD') as DAY,
       count(distinct(t.TRANSACTIONID)) as TRANSACTION_VOLUME,
       distinct t.QUALIFIEDORGUNITCODE as DEALERNUMBER
  from adtdealers.transaction t
  where t.DATECREATED between '01-oct-17' and '01-nov-17'
  group by to_char(t.DATECREATED, 'MON-DD'), t.QUALIFIEDORGUNITCODE;

我也可以成功运行:

select distinct t.QUALIFIEDORGUNITCODE as DEALERNUMBER,
       to_char(t.DATECREATED, 'MON-DD') as DAY
  from adtdealers.transaction t
  where t.DATECREATED between '01-oct-17' and '01-nov-17'
  group by t.QUALIFIEDORGUNITCODE, t.DATECREATED;

【问题讨论】:

  • 如果您能具体解释一下 00936 错误是什么,那将会很有帮助;唯一的错误信息不太可能是那个数字。您收到的 specific 错误消息是什么?它就在您面前的屏幕上,因此您没有理由不将其包含在您的帖子中。
  • 很抱歉。 00936 是一个 oracle 错误,给出的消息是 ORA-00936:缺少表达式 00936。00000 - “缺少表达式” *原因:*操作:第 17 行错误,第 17 列:105

标签: sql oracle select expression


【解决方案1】:

如果你使用group by,你几乎不需要select distinct。我想你只是打算:

select to_char(t.DATECREATED, 'MON-DD') as DAY,
       count(distinct t.TRANSACTIONID) as TRANSACTION_VOLUME, 
       t.QUALIFIEDORGUNITCODE as DEALERNUMBER
from adtdealers.transaction t
where t.DATECREATED between date '2017-10-01' and date '2017-11-01'
group by to_char(t.DATECREATED, 'MON-DD'), t.QUALIFIEDORGUNITCODE;

请注意,我将日期文字更改为在 date 关键字处使用 ISO 标准格式。

【讨论】:

  • 戈登,我真的很感激!你的解决方案奏效了。如果我可能会问,为什么我尝试使用的代码失败了?快速搜索后,我找到了另一个堆栈帖子,解释了 SQL 如何将“group by”和“distinct”处理为功能相同。 stackoverflow.com/questions/164319/… 在我的第一个和第三个示例中,我有“选择不同”和“分组依据”,按照上面的说法,我预计它也会失败。再次感谢您的解决方案。
  • @silentbob343 。 . .没有独立的distinct 关键字。你需要select distinct
【解决方案2】:

在 select 语句中只能使用一次 distinct。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多