在oracle的年份之间按月分组

时间:2016-07-04 11:08:25

标签: sql oracle oracle11g oracle10g

朋友......我这里有一个样本数据。

child.equals(parent) == parent.equals(child)

我需要通过分组PRD&来对金额字段求和。范围之间的日期(01-JUL-year和-30-June-year + 1)。 示例:2003-2004年度,需要比较2003年7月1日至2004年6月30日期间的范围。期望的输出应如下所示:

+-----------+-------+---------------+
| 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    |
+-----------+-------+---------------+

任何提供查询/逻辑的帮助都将非常高兴。非常感谢你!

1 个答案:

答案 0 :(得分:3)

组标准是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