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()函数来取日期的话,那么第二天的凌晨以后接的订单就被统计到第二天里去了,就满足不了财务的要求了。

作者: 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