gpt4 book ai didi

sql - 连续几年按周分组

转载 作者:行者123 更新时间:2023-12-04 23:24:16 26 4
gpt4 key购买 nike

我正在尝试按周汇总数据。我的示例查询看起来像

SET DATEFIRST 1 

Select ID,
DATENAME(week, p.SellingDate) as SellingWeek,
DATENAME(year, p.SellingDate) as SellingYear,
SUM(Quantity),
SUM(Revenue)
From dbo.Sales
Where
p.SellingDate >=’2015-12-20’ and P.SellingDate < ’2016-02-27’
Group by ID,
DATENAME(week, p.SellingDate),
DATENAME(year, p.SellingDate)

当我尝试这样做时,我遇到了一个问题:

查询返回正确的数据,但问题出现在 2015 年的最后一周。它仅将 2015 年的部分日期(12/28 到 12/31)视为第 53 周,并考虑剩余部分(01/01 至 01/03)作为 2016 年的新一周。我只有一行包含整周的数据,即 12/28 至 01/03),但 SQL Server 返回 2 行。有解决方法吗?

最佳答案

我想你想创建一个结构来在周开始和周末进行分组,然后使用它来对你的聚合子句进行分组。

SET DATEFIRST 1

Select DATEADD(dd, -(DATEPART(dw, p.SellingDate)-1), p.SellingDate) AS [WeekStart],
DATEADD(dd, 7-(DATEPART(dw, p.SellingDate)), p.SellingDate) AS [WeekEnd],
SUM(Quantity),
SUM(Revenue)
From dbo.Sales
Where
p.SellingDate >= '2015-12-20' and P.SellingDate < '2016-02-27'
Group by ID,
DATEADD(dd, -(DATEPART(dw, p.SellingDate)-1), p.SellingDate),
DATEADD(dd, 7-(DATEPART(dw, p.SellingDate)), p.SellingDate)

关于sql - 连续几年按周分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com