Sql 按季度分组
在SQL中,如何将每周数据分组为季度数据 我希望下面的代码返回报表中选择的列,但按季度汇总销售额,而不是返回每周数据 我的代码:Sql 按季度分组,sql,sql-server,ssms-2014,Sql,Sql Server,Ssms 2014,在SQL中,如何将每周数据分组为季度数据 我希望下面的代码返回报表中选择的列,但按季度汇总销售额,而不是返回每周数据 我的代码: select pz.PriceZoneID, pz.Name, es.ClientDepartmentID, es.DepartmentName, es.ClientCategoryID, es.CategoryName, es.ClientSubCategoryID, es.SubCategoryNam
select
pz.PriceZoneID,
pz.Name,
es.ClientDepartmentID,
es.DepartmentName,
es.ClientCategoryID,
es.CategoryName,
es.ClientSubCategoryID,
es.SubCategoryName,
es.ClientProductID,
es.ProductName,
ash.Sales as Units,
ash.price * ash.Sales as CashSales,
ash.Cost,
CAST(ash.date as Date) as Date
from aggregatedsaleshistory as ash
join v_EnterpriseStructure as es on es.ProductSID = ash.ProductSID
join PriceZone as pz on pz.PriceZoneID = ash.PriceZoneID
WHERE es.SubCategoryName = 'Yogurt'
GROUP BY
pz.PriceZoneID,
pz.Name,
es.ClientDepartmentID,
es.DepartmentName,
es.ClientCategoryID,
es.CategoryName,
es.ClientSubCategoryID,
es.SubCategoryName,
es.ClientProductID,
es.ProductName,
ash.Cost,
ash.Date
输出在最后一列中包含每周日期。因此,我的问题是如何将每周数据分组为季度?我想在下面粘贴一个示例,但我不确定如何在这里提供示例数据?当我保存编辑时,我刚刚粘贴的一个样本以一种奇怪的格式出现了
提前谢谢 特定的错误消息没有意义,因为您在GROUP BY中明确地有pz.PriceZoneID。如果GROUP BY前面有分号,则可能发生这种情况。我在问题的查询中没有看到分号 但你还是有问题。您聚合的列太多。小组成员应为:
GROUP BY
pz.PriceZoneID,
pz.Name,
es.ClientDepartmentID,
es.DepartmentName,
es.ClientCategoryID,
es.CategoryName,
es.ClientSubCategoryID,
es.SubCategoryName,
ash.SegmentID,
es.ClientProductID,
es.ProductName
这些都是SELECT中的非聚合列,除了ash.cost,它可能无论如何都不应该存在。您通常按所选列进行分组,除了那些设置函数的参数。如果没有表结构、示例数据和预期结果,我不确定如何回答您的第一个问题。错误消息没有多大意义。另外,我想指出的是,您不应该按包含在聚合中的字段进行分组-按从组中删除销售和价格…按列表从组中删除ash.sales和ash.price*ash.sales。它们是聚合列。寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。您好,sgeddes和Ken White-感谢您建议从分组列表中删除ash.sales和ash.price*ash.sales calc。好地方!!我仍然收到错误消息,但当我从选择列表中的ash.sales和ash.price*ash.sales行中删除SUM函数时,它消失了。尽管如此,我仍然有关于按季度对数据进行分组的疑问,因此任何想法都将不胜感激。提前谢谢。我已经修改了原来的问题。谢谢你的回答,戈登。你知道有多少列太多了吗?或者,在按进行分组时,应使用的列数是否有限制?当我从ash.sales和ash.price*ash.sales行中删除SUM函数时,无效的错误消息消失了。然而,我仍然有一个关于按季度分组数据的问题。提前感谢。@Mr2017。太多意味着您正在聚合作为聚合函数参数的列,例如我看到的ash.price*ash.Sales已被编辑掉。