2017-03-06 49 views
0

我們在12.1.0.2數據庫中,並且在運行查詢時遇到錯誤。請提供一些反饋。ORA-00979:不是12.1.0.2中的GROUP BY表達式

SQL> ed 
Wrote file afiedt.buf 

    1 select A.COLUMN_LABEL,B.HOST_NAME AS HOST,B.TARGET_NAME AS DATABASE,B.STATU 
S AS CURRENT_STATUS, B.TABLESPACE_NAME AS TS_NAME,round(sum(B.file_size/(1024*10 
24*1024)),2) AS CURRENT_SIZE, 
    2 B.AUTOEXTENSIBLE AS TYPE_TS,case when autoextensible ='YES' then round(sum(
max_file_size/(1024*1024*1024)),2) ELSE NULL END AS TOTAL_MAX_SIZE,to_number(A.v 
alue)/1024 as value 
    3 FROM SYSMAN.MGMT$METRIC_CURRENT A,SYSMAN.MGMT$DB_DATAFILES_ALL B,sysman.mgm 
t$db_tablespaces C 
    4 where a.column_label in ('Tablespace Used Space (MB)') 
    5  and a.target_type in('rac_database','oracle_database') 
    6  and a.target_type =b.target_type 
    7  AND A.TARGET_TYPE=C.TARGET_TYPE 
    8  AND B.TARGET_TYPE=C.TARGET_TYPE 
    9  AND B.STATUS IN('ONLINE') 
10 AND A.TARGET_NAME=B.TARGET_NAME 
11 AND A.TARGET_NAME=C.TARGET_NAME 
12 AND B.TARGET_NAME=C.TARGET_NAME 
13 GROUP BY 1,2,3,4,5,6,7,8 
14* ORDER BY 1,2,3,4,5,6,7,8 
SQL>/
select A.COLUMN_LABEL,B.HOST_NAME AS HOST,B.TARGET_NAME AS DATABASE,B.STATUS AS 
CURRENT_STATUS, B.TABLESPACE_NAME AS TS_NAME,round(sum(B.file_size/(1024*1024*10 
24)),2) AS CURRENT_SIZE, 
     * 
ERROR at line 1: 
ORA-00979: not a GROUP BY expression 

SQL>編 寫文件afiedt.buf

+1

「GROUP BY 1,2,3,4,5,6,7,8」syntaxt不受Oracle支持。您必須在GROUP BY子句中複製所選列。 –

+0

該羣似乎不正確,爲什麼你想要所有人組合,當你正在做一筆款項時,我想你可能想嘗試'A.COLUMN_LABEL,B.HOST_NAME,B.TARGET_NAME,B.STATUS, B.TABLESPACE_NAME,B.AUTOEXTENSIBLE,to_number(A.value)/ 1024' –

回答

0

集團按序號是不是默認啓用。您必須將_sql_compatibility設置爲1

select deptno, sum(sal) 
    from emp 
    group by 1 
    order by 1 
SQL>/
select deptno, sum(sal) 
     * 
ERROR at line 1: 
ORA-00979: not a GROUP BY expression 

alter session set "_sql_compatibility"=1 

Session altered. 

select deptno, sum(sal) 
from emp 
group by 1 
order by 1 

SQL>/

    DEPTNO SUM(SAL) 
---------- ---------- 
     10  8750 
     20  10875 
     30  9400 
+0

請注意'_sql_compatibility'是一個所謂的「下劃線參數」,這意味着它是未記錄的,不應在生產代碼中使用,除非Oracle支持部門告訴您至。在這種情況下,它可能不會造成任何傷害,只是最好了解發生了什麼。 – APC

+0

這個可以安全使用。 – BobC

相關問題