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
在派生表中执行日期->年转换。根据结果分组。