Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按季度分组_Sql_Sql Server_Ssms 2014 - Fatal编程技术网

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

在SQL中,如何将每周数据分组为季度数据

我希望下面的代码返回报表中选择的列,但按季度汇总销售额,而不是返回每周数据

我的代码:

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已被编辑掉。