SQL日期问题,怎么样按记录里的日期进行分类,15天一档

来源:百度知道 编辑:UC知道 时间:2024/05/19 20:02:41
大侠:
想请教一个有点难度的问题,我有很多的数据,但我怎么样按记录里的日期进行分类,15天一档

设表格式为:tablename(id int,qty decimal(12,4),datex datetime)
则按DATEX字段以15天为周期对qty进行汇总的语句如下:
--测试通过:
select dateadd(day,dayx*15,0) as [区间开始日期],qty as [15日合计],countx as 汇总行数 from
(
select floor(datediff(day,0,datex)/15.0) as dayx,sum(qty) as qty,count(1) as countx from tablename group by floor(datediff(day,0,datex)/15.0)
) a

--请注意,日期0表示1900-01-01,该例中的几个零就是指起始计算日期,这里是从1900-01-01为基准计算相距为15天的日期,您也可以换成其它日期,如2008-01-01,表示开始计算时间为08年1月1日

这个要求只有写程序来实现!

或者加一个字段,对同一日期段的数据做上相同的标记! 比如用datediff算出记录里的日期到2000-1-1的总天数,然后用15取模,得到的数据填入标记字段, 查询的时候就可以对这个字段进行group by的查询了!

创建一个比你目标数据库表多一个字段的"暂存表" 把你的数据插入到这个"暂存表" 里面,然后按日期在那个多出来的字段里面把那些"15天"的日期进行标记.然后就可以分类查询了.
那些"15天"的日期进行标记的方法,可以用substring 截取你的日期中的"日"然后 用case语句 update 那个多出来的字段.

select dateadd(day,dayx*15,0) as [区间开始日期],qty as [15日合计],countx as 汇总行数 from
(
select floor(datediff(day,0,datex)/15.0) as dayx,sum(qty) as