SQL组函数嵌套得太深

时间:2016-11-13 20:24:47

标签: sql oracle max

当我运行以下SQL语句时:

SELECT *
  FROM (SELECT ID_BARANG
               ID_CUST,
               MAX(JML) AS JML,
               TGL_TRANSAKSI
          FROM PEMBELIAN_DETIL_1301140002 
          NATURAL JOIN PEMBELIAN_1301140002 
          GROUP BY ID_TRANSAKSI
          ORDER BY MAX(JML) DESC
          )
  WHERE ROWNUM = 1;

我收到以下错误:

  

第4行的错误:ORA-00935:组功能嵌套太深

任何人都可以帮助我吗? 谢谢

2 个答案:

答案 0 :(得分:0)

问题在于MAX(JML) AS JMLORDER BY MAX(JML) DESC
ORDER BY子句中的JML不是原始列JML,而是MAX(JML)的别名。
因此,ORDER BY表达式实际上被解释为MAX(MAX(JML)),它是嵌套组函数。

无论如何,这是一个糟糕的代码。

  • 在聚合子查询中选择的列无效。
  • 使用NATURAL JOIN。

答案 1 :(得分:0)

试试这个:

SELECT * 
FROM   (SELECT id_barang, 
               id_cust, 
               Max(jml) AS JML, 
               tgl_transaksi 
        FROM   pembelian_detil_1301140002 
               natural JOIN pembelian_1301140002 
        GROUP  BY id_transaksi, 
                  id_cust, 
                  tgl_transaksi 
        ORDER  BY jml DESC) 
WHERE  rownum = 1;