我试图生成一份月度报告,但我不知道如何在几周内将其分解。例如,当我生成一月份时,我的输出报告应该被分成4周-1月份的第一周/第二周/第三周/第四周-这是可能的吗?应该在保存到数据库之前完成,还是SQL就可以了?我有一个名为RecordDate的datetime字段
我使用的是SQL Server2005、VS2010和用于VS2010的CR。
发布于 2014-08-19 16:57:25
给定您的datetime字段RecordDate,下面的SQL将给出该月的第几周(从1开始)
select (((datepart(d, RecordDate)-1) / 7)+1)如果您按此进行分组,您应该能够在一个月内按周生成一个细目。
当然,这样做的一些“周”将不会是7天长。这可能是你真的想要按一年的星期分组,即。
select datepart(wk, RecordDate)在每种情况下,您都需要生成标签。如果你打算用SQL来做这件事,那么在第一个例子中,要得到一个类似'week 1 of month 7‘的标签,它应该是这样的
select 'week ' + cast( (((datepart(d, RecordDate)-1) / 7)+1) as char(1))
+ ' of month ' + cast(datepart(month, RecordDate) as varchar(2))
from Table
group by (((datepart(d, RecordDate)-1) / 7)+1), datepart(month, RecordDate)对于第二种情况,你必须绕着房子转一圈,才能得到一个类似于“从第7个月开始的第1周”的标签(我把这篇文章留给读者作为练习)。
https://stackoverflow.com/questions/25323105
复制相似问题