2016-10-28 46 views
0

我不斷收到這個ORA-00918:列模糊定義的錯誤,我不知道我做錯了什麼。任何幫助,將不勝感激這裏是我的代碼:繼續獲取ORA-00918:列含義不明確。非常困惑

select CUSTOMER.CUS_CODE as CUS_CODE, 
CUSTOMER.CUS_AREACODE as CUS_AREACODE, 
INVOICE.INV_NUMBER as INV_NUMBER, 
SUM(LINE.LINE_UNITS*LINE.LINE_PRICE) as Amount 
from LINE LINE, 
INVOICE INVOICE, 
CUSTOMER CUSTOMER 
where CUSTOMER.CUS_CODE=INVOICE.CUS_CODE 
and INVOICE.INV_NUMBER=LINE.INV_NUMBER 
group by CUS_AREACODE, CUS_CODE 
+1

學習使用正確,明確的'JOIN'語法。另外,我不確定問題是什麼。查詢中只有兩個不合格的列引用,所以答案對我來說很明顯。 –

+1

您有(至少)兩個表有一個名爲'CUS_CODE'的列。當你說'按CUS_CODE命令'時,你的意思是哪張表的'CUS_CODE'? – mustaccio

+0

@mustaccio我正在嘗試使用CUSTOMER表。如果我通過CUS_AREACODE,CUSTOMER.CUS_CODE進行分組,它仍然會給我那個錯誤 –

回答

1

我強烈懷疑這是GROUP BY。首先,您需要添加總和中未使用的所有字段。其次,您應該在GROUP BY的所有字段中指定表或別名。改變你的陳述爲

SELECT c.CUS_CODE as CUS_CODE, 
     c.CUS_AREACODE as CUS_AREACODE, 
     i.INV_NUMBER as INV_NUMBER, 
     SUM(l.LINE_UNITS * l.LINE_PRICE) as Amount 
    FROM CUSTOMER c 
    INNER JOIN INVOICE i 
    ON INVOICE.CUS_CODE = CUSTOMER.CUS_CODE 
    INNER JOIN LINE l 
    ON l.INV_NUMBER = i.INV_NUMBER 
GROUP BY c.CUS_CODE, 
      c.CUS_AREACODE, 
      i.INV_NUMBER 

看看是否沒有得到它。請注意,我更改了別名,以便它們短而易於理解,並將連接更改爲ANSI風格的聯接,而不是舊的隱式聯接。

祝你好運。