2016-07-04 155 views
1

朋友...我在这里有一个示例数据。按月分组的月份范围

+-----------+-------+---------------+ 
| PRD  | AMT | Date  | 
+-----------+-------+---------------+ 
| 1  | 100 | 14-JUL-03 | 
| 1  | 100 | 16-JUN-04 | 
| 1  | 200 | 18-JUL-04 | 
| 1  | 200 | 14-MAY-05 | 
| 2  | 100 | 20-JUL-05 | 
| 2  | 100 | 14-OCT-05 | 
| 2  | 100 | 26-APR-06 | 
+-----------+-------+---------------+ 

我需要通过分组范围(01-JUL-年& 30月年+ 1)之间PRD &日期总结量字段。 示例:2003-2004年,需要比较2003年7月1日至2004年6月30日的范围。所需的输出应如下所示:

PRD | Sum(AMT) |  year 
1 | 200  |  2003-2004 
1 | 400  |  2004-2005 
2 | 300  |  2005-2006 

任何帮助提供查询/逻辑将非常高兴地赞赏。非常感谢!

+0

执行日期 - >一年的转换在派生表。 GROUP BY是结果。 – jarlh

回答

3

组标准是珠三角,第二个是当你提取之日起6个月,并截断为一年:

SELECT prd, 
     SUM (amt), 
     TO_CHAR (ADD_MONTHS ("Date", -6), 'YYYY') || '-' || TO_CHAR (ADD_MONTHS ("Date", 6), 'YYYY') AS year 
    FROM table_name 
GROUP BY prd, TO_CHAR (ADD_MONTHS ("Date", -6), 'YYYY') || '-' || TO_CHAR (ADD_MONTHS ("Date", 6), 'YYYY') 
ORDER BY 1, 3