我有以下代码抛出异常
Ora-00979:不是按表达式分组。
即使我删除group by
子句,它仍然会出错
ORA-00937:不是单组组功能。
我是这个领域的新手,对联接等知识不足。如果有人请帮我解决以下问题,我将不胜感激。
select sDateTime AS Sale_Date, SUM(Amount) AS Sale, SerName
FROM SALES natural join sales_Description natural join Services
where ((sDateTime >= to_date('2015-01-01','yyyy-MM-dd'))
and (sDateTime <= to_date('2015-01-09','yyyy-MM-dd')))
GROUP BY to_char(sDateTime,'yyyy-MM-dd')
答案 0 :(得分:1)
SerName
子句中未包含GROUP BY
列。您必须将其包含在GROUP BY
子句中或将其汇总(MAX
,MIN
等)。
尝试将您的查询更改为:
SELECT sDateTime AS Sale_Date, SUM(Amount) AS Sale, SerName
FROM SALES natural join sales_Description natural join Services
WHERE ((sDateTime >= to_date('2015-01-01','yyyy-MM-dd'))
AND (sDateTime <= to_date('2015-01-09','yyyy-MM-dd')))
GROUP BY to_char(sDateTime,'yyyy-MM-dd'), SerName
无论如何,我不知道这是否是你想要的结果。
答案 1 :(得分:0)
第一个错误not a group by
归因于以下内容 -
GROUP BY to_char(sDateTime,'yyyy-MM-dd'),
。
您需要在to_char
中拥有相同的select
或将group by
更改为sDateTime
。
第二次出现错误not a single-group group
错误,因为您按表达式删除了分组。您需要columns
select list
aggregating
行。{/ p>
尝试以下方法 -
SELECT to_char(sDateTime,'yyyy-MM-dd') AS Sale_Date,
SerName,
SUM(Amount) AS Sale
FROM SALES natural join sales_Description natural join Services
WHERE ((sDateTime >= to_date('2015-01-01','yyyy-MM-dd'))
AND (sDateTime <= to_date('2015-01-09','yyyy-MM-dd')))
GROUP BY to_char(sDateTime,'yyyy-MM-dd'), SerName