2016-07-04 15 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 - 7月年& 30 - 6月-年+ 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

グループの基準は、PRDであり、あなたが日から6ヶ月を抽出ときに、第2の1であり、年に切り捨て:

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 
関連する問題