心如刀割 2011-05-24 23:02 采纳率: 0%
浏览 220
已采纳

请教一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

  • 写回答

1条回答 默认 最新

  • iteye_8576 2011-05-25 07:47
    关注

    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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?