我正在使用以下查询获取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子句的任何示例。我尝试一次从组中删除每个字段,但仍然遇到相同的错误。
你必须把的所有列SELECT的GROUP BY或使用的压缩结果为单一值(如对他们的功能MIN,MAX或SUM)。
SELECT
GROUP BY
MIN
MAX
SUM
一个简单的示例来了解为什么会发生这种情况:假设您有一个这样的数据库:
FOO BAR 0 A 0 B
然后你跑了SELECT * FROM table GROUP BY foo。这意味着数据库必须返回第一行的结果作为第一行0来满足,GROUP BY但是现在有两个值bar可供选择。您期望得到哪个结果-A或B?还是数据库应该返回多个行,从而违反的约定GROUP BY?
SELECT * FROM table GROUP BY foo
0
bar
A
B