请教一sql~~谢谢诸位

我们这个项目有一个设定起始日为这个月的第一天
比如2011/03/16为 起始日,2011/09/15为结束日

查出 2011/03/16 到 2011/04/15 为4月份的数据
2011/04/16 到 2011/05/15 为5月份的数据
2011/05/16 到 2011/06/15 为6月份的数据
2011/06/16 到 2011/07/15 为7月份的数据
2011/07/16 到 2011/08/15 为8月份的数据
2011/08/16 到 2011/09/15 为9月份的数据
比如 :
日期 金额
2011/03/16 20
2011/03/17 30
2011/04/14 50
2011/04/15 50
以上为4月份的数据
2011/04/16 10
2011/04/17 20
2011/05/14 30
2011/05/15 40
以上为5月份的数据
2011/05/20 10
以上为6月份的数据
2011/06/17 20
2011/06/18 30
以上为7月份的数据
查出的结果应该为
月份 总金额
2011/04 150
2011/05 100
2011/06 10
2011/07 50

oracle:
[code="sql"]SELECT m.workdate, SUM(m.salary)
FROM (SELECT CASE
WHEN to_char(to_date(t.workdate, 'yyyy/mm/dd'), 'dd') > 15 THEN
to_char(add_months(to_date(t.workdate, 'yyyy/mm/dd'), 1),
'yyyy/mm')
ELSE
to_char(to_date(t.workdate, 'yyyy/mm/dd'), 'yyyy/mm')
END workdate,
t.salary
FROM tb1 t
WHERE t.workdate >= '2011/03/16'
AND t.workdate <= '2011/09/15') M
GROUP BY m.workdate
ORDER BY m.workdate[/code]