2016-07-04 156 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