我通过以下查询得到 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