Sql ORA-00979,但我在GROUPBY语句中的SELECT中有元素
我有一个类似的问题:Sql ORA-00979,但我在GROUPBY语句中的SELECT中有元素,sql,oracle,ora-00979,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) WH
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"
我看到了一个问题,解释了我需要将select中的所有字段都包含在group by中。我通过列编号来实现这一点
如何调整此查询以避免出现00979错误
我通过列编号来实现这一点
在PostgreSQL这样的数据库中工作:
SELECT abc, xyz
FROM ...
GROUP BY 1, 2 -- referencing abc and xyz by column number
但不是在甲骨文。在Oracle中,不能从GROUPBY子句中引用SELECT子句,但必须再次重复完整的列表达式
SELECT abc, xyz
FROM ...
GROUP BY abc, xyz
。。。或者在您的情况下:
[...]
GROUP BY
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9;
我通过列编号来实现这一点
在PostgreSQL这样的数据库中工作:
SELECT abc, xyz
FROM ...
GROUP BY 1, 2 -- referencing abc and xyz by column number
但不是在甲骨文。在Oracle中,不能从GROUPBY子句中引用SELECT子句,但必须再次重复完整的列表达式
SELECT abc, xyz
FROM ...
GROUP BY abc, xyz
。。。或者在您的情况下:
[...]
GROUP BY
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9;
我相信您应该能够通过非计数或聚合字段进行分组,而不会出现错误。您可能还需要添加一个命名约定,因为您正在计算字段9,并且也在按字段9计数
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
我相信您应该能够通过非计数或聚合字段进行分组,而不会出现错误。您可能还需要添加一个命名约定,因为您正在计算字段9,并且也在按字段9计数
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