按语句分组 SQL

Posted

技术标签:

【中文标题】按语句分组 SQL【英文标题】:Group By Statement SQL 【发布时间】:2012-05-25 04:55:08 【问题描述】:

这个 Select 语句给出了一个数字:

-相同的猫码

-相同的猫名

但使用不同的 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 时出现错误

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;

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

您还必须将您在 group by 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;

【讨论】:

以上是关于按语句分组 SQL的主要内容,如果未能解决你的问题,请参考以下文章

按语句分组 SQL

按 SQL 语句分组

sql多条件分组查询,求sql语句。

sql数据库怎么实现分组并取每组的前1条语句,按日期排序?

SQL: 一般情况按年分组,特殊年份按指定日期分组,SELECT语句怎么写?

sql语句 按一列分组 然后再按别一列组内排序?