我试图生成月度报告,但我不知道如何在几周内将其分解。例如,当我生成1月时,我的输出报告应分为4周 - 第一周/第二周/第三周/第四周1月 - 这是否可能?应该在保存到数据库还是SQL之前完成?我有一个名为RecordDate的日期时间字段
我正在使用SQL Server 2005,VS 2010和CR for VS2010。
答案 0 :(得分:0)
根据您的datetime
字段RecordDate
,以下SQL将给出该月的一周(从1开始)
select (((datepart(d, RecordDate)-1) / 7)+1)
如果按此分组,您应该能够按一个月的周数生成细分。
当然,这样做的一些'周'不会是7天。可能你真的想按一年中的一周分组,即
select datepart(wk, RecordDate)
在每种情况下,您都需要生成标签。如果您要在SQL中执行此操作,那么在第一种情况下获取类似“第7周的第1周”的标签,它将类似于
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周”标签(我将把这作为读者的练习)