SQL 指定时间段统计的问题
各位大侠:
我的数据库里有一个定单表,表的字段与部分数据如下:
Po_Date Po_NO Description Quantity
2011-05-01 09:00:00 001 面粉 1
2011-05-01 15:30:00 002 面粉 1
2011-05-02 02:45:00 003 面粉 1
2011-05-02 05:45:00 004 大米 1
2011-05-02 08:15:00 005 大米 1
2011-05-02 11:20:00 006 大米 1
..........
2011-05-15 13:50:00 020 大米 1
2011-05-30 09:20:00 021 面粉 1
我的问题是:我想分类汇总一个月来每天“面粉”和“大米”的数量(Quantity),但每天的时间段必须是当天早上08:00:00到第二天早上07:59:59。请大家注意时间段,因为第二天07:59:59之前所接的订单也算是前一天的。如果只简单地用
day()函数来取日期的话,那么第二天的凌晨以后接的订单就被统计到第二天里去了,就满足不了财务的要求了。
我的数据库里有一个定单表,表的字段与部分数据如下:
Po_Date Po_NO Description Quantity
2011-05-01 09:00:00 001 面粉 1
2011-05-01 15:30:00 002 面粉 1
2011-05-02 02:45:00 003 面粉 1
2011-05-02 05:45:00 004 大米 1
2011-05-02 08:15:00 005 大米 1
2011-05-02 11:20:00 006 大米 1
..........
2011-05-15 13:50:00 020 大米 1
2011-05-30 09:20:00 021 面粉 1
我的问题是:我想分类汇总一个月来每天“面粉”和“大米”的数量(Quantity),但每天的时间段必须是当天早上08:00:00到第二天早上07:59:59。请大家注意时间段,因为第二天07:59:59之前所接的订单也算是前一天的。如果只简单地用
day()函数来取日期的话,那么第二天的凌晨以后接的订单就被统计到第二天里去了,就满足不了财务的要求了。
作者: Spring_Song 发布时间: 2011-06-11
-- 用 case when 语句将日期处理一下撒!
作者: luoyoumou 发布时间: 2011-06-11
SQL code
select convert(varchar(10),Po_Date,120) as Po_Date,Description, sum(case when Po_Date between convert(varchar(10),Po_Date,120)+' 08:00:00' and convert(varchar(10),Po_Date+1,120)+' 07:59:59' then Quantity else 0 end from tablename group by convert(varchar(10),Po_Date,120),Description
作者: maco_wang 发布时间: 2011-06-11