当前位置: 首页 > 面试题库 >

ORA-00979不是按表达式分组

金皓君
2023-03-14
问题内容

我正在使用以下查询获取ORA-00979:

SELECT cr.review_sk, cr.cs_sk, cr.full_name,
tolist(to_char(cf.fact_date, 'mm/dd/yyyy')) "appt",
cs.cs_id, cr.tracking_number
from review cr, cs, fact cf
where cr.cs_sk = cs.cs_sk
and UPPER(cs.cs_id) like '%' || UPPER(i_cs_id) || '%'
and row_delete_date_time is null
and cr.review_sk = cf.review_wk (+)
and cr.fact_type_code (+) = 183050
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number
ORDER BY cs.cs_id, cr.full_name;

我找不到在同一查询中同时具有GROUP BY和ORDER BY子句的任何示例。我尝试一次从组中删除每个字段,但仍然遇到相同的错误。


问题答案:

你必须把的所有列SELECTGROUP BY或使用的压缩结果为单一值(如对他们的功能MINMAXSUM)。

一个简单的示例来了解为什么会发生这种情况:假设您有一个这样的数据库:

FOO BAR
0   A
0   B

然后你跑了SELECT * FROM table GROUP BY foo。这意味着数据库必须返回第一行的结果作为第一行0来满足,GROUP BY但是现在有两个值bar可供选择。您期望得到哪个结果-AB?还是数据库应该返回多个行,从而违反的约定GROUP BY



 类似资料:
  • 问题内容: 有人可以帮我这个特定的查询吗?尝试运行此命令时,我遇到了ORA-00979: 问题答案: 问题是您的零件的子查询。仅仅因为其中包含了一个计数,实际上并不能使它成为一个汇总。它仍然是一个子查询,将应用于每行,并且您可以看到它使用的值不属于该组。

  • 问题内容: 我有这个查询 引发ORA-00936缺少表达式的allow查询有什么问题?任何人?任何帮助将不胜感激…在第一个顺序的开头处,列:80处引发错误: 问题答案: 您的查询可以大大简化。它具有诸如子查询的额外层和在子查询中不必要的东西。您想做什么就可以:

  • 问题内容: 我收到以下查询的ORA:00936错误。请让我知道查询中的问题 问题答案: SELECT convert(DATE,r.created_dt)作为created_dt 问题在于错误使用了 CONVERT 函数。请参阅文档。 我猜您正在尝试转换数据类型,可以使用 TO_DATE 将字符串转换为日期。或者, TO_CHAR 反之亦然。

  • 我需要的算法,将检查是否给定的表达式是中缀,后缀或前缀表达式。我尝试了一种方法,通过检查字符串的第一个或最后两个项,例如。 AB如果字符串的第一个索引中有一个运算符,那么它就是一个前缀 AB如果字符串的最后一个索引中有一个运算符,那么它就是一个后缀 否则它就是一个中缀。 但是感觉不太合适,所以请建议我一个更好的算法。

  • 问题内容: 效果很好,但是当我在select中包含标题时,例如: 没有。为什么?如何使其运作? 问题答案: 如果那是您的意思,Rhys的答案是正确的,但是您可能想在()中使用,而该措辞建议了如何获得该答案: 为了减少重复,可以使用子句(如果使用的是最新版本的SQL): 我用来确认语法的示例。

  • 问题内容: 正则表达式中是否存在NOT运算符?就像在那个字符串中一样: 我想删除所有但不是一年的:。 因此,正则表达式应返回的内容必须是:。 注意:类似的东西对我不起作用(某种程度上也匹配…) 问题答案: 不,没有直接的非运算符。至少不是您希望的方式。 您可以使用零宽度的负前瞻,但是: 该部分的意思是“仅在 以下 文本(因此:前瞻)与此(因此:否定) 不 匹配时才匹配。但是它实际上并不会 消耗 其