Sql select 语句,它将在几周内恢复我的数据,使用派生表和 JasperReports



我目前正在JasperReports Server中运行以下sql语句,以使用派生表恢复数据。

Select count(createddate) as ModulesCreatedDuringPastWeek, 
count(updateddate) as  ModulesUpdatedDuringPastWeek, 
createddate, 
updateddate 
from merchendisingmodule 
group by merchendisingmodule.createddate, merchendisingmodule.updateddate

但是,在对数据进行分组时,我只能按年,季度,月和日进行分组。但是,对于我的报告,我需要将数据设置为分组周,所以我想知道我需要在我的代码中添加什么来执行此操作。

DATEADD(D,-DATEPART(weekday,createddate)+1,createddate)

我使用这种方法来防止一年过渡期间的问题(1 月第一天的第 53 周和 12 月的最后几天,将相隔 360 天的日子分组在一起)。我使用一周的第一天,而不是周的数字。我可以使用这些日期进行分组。此外,这将确保每周有 7 天,而不是一年的最后一周只有 3 或 4 天。

顺便说一句,在这个例子中,一周的第一天是星期日。

如果您的日期包括时间,请使用:

CAST(FLOOR(CAST(createddate AS FLOAT)) AS DATETIME)

而不是上述语法中的创建日期