Sql 在oracle中,按月份分组的范围从年到年

Sql 在oracle中,按月份分组的范围从年到年,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,朋友们…我这里有一个样本数据 +-----------+-------+---------------+ | PRD | AMT | Date | +-----------+-------+---------------+ | 1 | 100 | 14-JUL-03 | | 1 | 100 | 16-JUN-04 | | 1 | 200 | 18-JUL-04 | | 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    |
+-----------+-------+---------------+
我需要通过将PRD和日期分组,在范围(1年7月1日和6月30日+1)之间对金额字段求和。 示例:对于2003-2004年,需要比较2003年7月1日至2004年6月30日之间的范围。所需输出应如下所示:

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

如能提供查询/逻辑方面的任何帮助,我们将不胜感激。非常感谢你

集团标准是prd,第二个标准是从日期起提取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

在派生表中执行日期->年转换。根据结果分组。