Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-00979,但我在GROUPBY语句中的SELECT中有元素_Sql_Oracle_Ora 00979 - Fatal编程技术网

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