2014-02-17 106 views
0

我發現了十幾個與我的問題類似的不同線程,但我沒有看到任何解決我遇到的問題。我有三個數據庫來跟蹤客戶/銷售交易。我可以加入它們並獲得我正在查找的單個事務,但沒有問題,但是當我嘗試按vendor_name對結果進行分組時,我得到「ORA-00979:不是GROUP BY表達式」,儘管vendor_name是列I我正在選擇(我認爲這是先決條件)。我在這裏忽略了一些真正簡單的東西?「Group By」失敗 - ORACLE

select tran_date,product_name,quantity, 
     product_price,vendor_name,quantity*product_price as total 
from transactions 
join products using(product_num) 
    join customers using(vendor_id) group by vendor_name; 
+1

Group by用於聚合...您想在這裏聚合什麼數據?所有列或者需要是一個集合或者一個集合的一部分。 – Twelfth

+3

最大值,最小值,計數,總和...沒有聚合,不需要分組。也許你的意思是順序? – xQbert

+0

更新了您的問題,以指定您爲什麼需要'group by'以及您試圖通過使用它來完成的任務。 – 2014-02-17 19:08:01

回答

1

「按照供應商名稱分組」表示您試圖爲每個供應商名稱獲取一條記錄。所以,你需要指定其他列應該如何分組/聚合。

例如"quantity*product_price",是一個數字,你需要什麼部分是

select vendor_name, sum(quantity*product_price) 
from transactions 
join products using(product_num) 
    join customers using(vendor_id) 
group by vendor_name; 

完整的回答你的問題取決於你想怎麼其他塔中,爲給定的分組供應商名稱。

+0

這確實正是我所期待的。我應該意識到,除了列被分組以外,我要求的其他列必須是某種聚合列。 – user3043133