按语句分组SQL

时间:2012-05-25 04:55:09

标签: sql oracle oracle10g

此Select Statement提供的数字为:

-Same CatCode

-Same CatName

但使用不同的Sales_Amt

Select p.CatCode, p.CatName, s.Sales_Amt
From A3_Dw_Prod p, A3_Dw_Sales s
Order By p.Dw_Prod_Id Desc;

我想使用Sum函数添加这些类别和Group Them 当我使用Sum时,我得到一个错误

ORA-00979:不是GROUP BY表达式

Select p.CatCode, p.CatName, Sum(s.Sales_Amt)
From A3_Dw_Prod p, A3_Dw_Sales s
Where p.Dw_Prod_Id = s.Dw_Prod_Id
Group By p.CatCode, p.CatName 
Order By p.Dw_Prod_Id Desc;

3 个答案:

答案 0 :(得分:1)

我认为“p.Dw_Prod_Id Desc”列不在group by子句中。

答案 1 :(得分:0)

我认为问题出现了,因为您在ORDER BY子句中包含了“p.Dw_Prod_Id” 但是,尚未在主查询中选择此列,因此会产生问题 放入ORDER BY select子句中的一列(p.CatCode,p.CatName)

答案 2 :(得分:0)

您必须将所有这些列放在您正在使用OR order by子句的组中。

Select p.CatCode, p.CatName, p.Dw_Prod_Id, Sum(s.Sales_Amt)
From A3_Dw_Prod p, A3_Dw_Sales s
Where p.Dw_Prod_Id = s.Dw_Prod_Id
Group By p.CatCode, p.CatName,p.Dw_Prod_Id
Order By p.Dw_Prod_Id Desc, p.CatCode, p.CatName;