我目前正在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)
而不是上述语法中的创建日期