2016-11-13 91 views
-1

當我運行下面的SQL語句: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; 

我獲得以下錯誤:

ERROR 4行:ORA-00935:組函數嵌套過深

有人可以幫我嗎? 謝謝

+0

可能重複:http://stackoverflow.com/questions/16576338/sql-group-function-nested-too-deeply – lovasoa

回答

0

問題是MAX(JML) AS JMLORDER BY MAX(JML) DESC
的JML在ORDER BY子句是不是原來的列JML,但別名到MAX(JML)。
因此,ORDER BY表達式實際上被解釋爲MAX(MAX(JML)),它是嵌套的組函數。


在任何情況下,這是一個錯誤的代碼。

  • 在聚合子查詢中選擇的列無效。
  • 使用NATURAL JOIN。
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; 
+0

請編輯您的答案,並解釋爲什麼你做了你所做的改變,以便OP能夠了解你爲什麼做了你所做的事情。謝謝。另外 - 你的意思是'ID_BARANG'而不是'ID_TRANSAKSI'? –