New*_*Guy 1 sql oracle ora-00979
我有一个类似这样的查询:
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;
Run Code Online (Sandbox Code Playgroud)
当我重新开始时,我明白了
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
Run Code Online (Sandbox Code Playgroud)
我已经看到了这个问题,并解释说我需要包括在各个领域select
中group by
.我通过列号来做到这一点.
如何调整此查询以便我不会收到00979
错误?
我通过列号来做到这一点.
这适用于像PostgreSQL这样的数据库:
SELECT abc, xyz
FROM ...
GROUP BY 1, 2 -- referencing abc and xyz by column number
Run Code Online (Sandbox Code Playgroud)
但不是在Oracle中.在Oracle中,您不能SELECT
从您的GROUP BY
子句引用您的子句,但您必须再次重复完整的列表达式
SELECT abc, xyz
FROM ...
GROUP BY abc, xyz
Run Code Online (Sandbox Code Playgroud)
......或者在你的情况下:
[...]
GROUP BY
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9;
Run Code Online (Sandbox Code Playgroud)