2014-02-17 70 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