我有类似的查询:
SELECT field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9,
count(field9)
FROM REPORT_TABLE
LEFT JOIN
DATAMINE
USING (REPORT_ID)
WHERE field1 LIKE 'MatchingText%'
AND TS_START between to_date('2015-05-01', 'YYYY-MM-DD') and to_date('2015-06-06', 'YYYY-MM-DD') + 0.99999999
GROUP BY field9,
1,
2,
3,
4,
5,
6,
7,
8,
9;
当我重新开始时,我得到了
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
我看到了this个问题,并解释说我需要在select
group by
中包含所有字段。我通过列号来做到这一点。
如何调整此查询以便我不会收到00979
错误?
答案 0 :(得分:7)
我已经通过列号来完成了。
这适用于像PostgreSQL这样的数据库:
SELECT
但不是在Oracle中。在Oracle中,您无法从GROUP BY
子句引用SELECT abc, xyz
FROM ...
GROUP BY abc, xyz
子句,但必须重复完整的列表达式
[...]
GROUP BY
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9;
......或者在你的情况下:
setup.py
答案 1 :(得分:0)
我相信你应该能够通过非计数或聚合字段进行分组,并且不会得到错误。您可能还需要添加命名约定,因为您正在计算field9并计算它
SELECT
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9,
count(field9) AS "Field9_Count"
FROM REPORT_TABLE
LEFT JOIN DATAMINE
USING (REPORT_ID)
WHERE ( field1 LIKE 'MatchingText%') AND TS_START between to_date('2015-05-01', 'YYYY-MM-DD') and to_date('2015-06-06', 'YYYY-MM-DD')+0.99999999
GROUP BY field1, field2, field3, field4, field5, field6, field7, field8, field9