oracle数据库,表中有字段:日期dqt_date,期初数量dqt_c,期末数量dqt_e。要求查出每月最开始一天的期初数量,每月最后一天的期末数量
(表中日期字段数据:
一月:2015-01-30,2015-01-31,
二月 ~ 六月日期每天都有,
七月:2015-07-01 ~ 2015-07-13)
结果举例(注意1月的期初数量是30号和7月的期末数量是13号)

2015-01-30   期初数量  2015-01-31  期末数量
2015-02-01   期初数量  2015-02-31  期末数量
2015-03-01   期初数量  2015-03-31  期末数量
2015-04-01   期初数量  2015-04-31  期末数量
2015-05-01   期初数量  2015-05-31  期末数量
2015-06-01   期初数量  2015-06-31  期末数量
2015-07-01   期初数量  2015-07-13  期末数量

解决方案 »

  1.   


    SELECT TO_CHAR(DQT_DATE, 'yyyymm') DQT_MONTH,
           MAX(DECODE(DQT_DATE, MINDATE, DQT_C, NULL)) DQT_C,
           MAX(DECODE(DQT_DATE, MAXDATE, DQT_E, NULL)) DQT_E
      FROM (SELECT DQT_DATE,
                   DQT_C,
                   DQT_E,
                   MIN(DQT_DATE) OVER(PARTITION BY TRUNC(DQT_DATE, 'mm')) MINDATE,
                   MAX(DQT_DATE) OVER(PARTITION BY TRUNC(DQT_DATE, 'mm')) MAXDATE
              FROM TB)
     GROUP BY TO_CHAR(DQT_DATE, 'yyyymm')