Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

「PARTITION BY」について

961952Sep 13 2012 — edited Sep 13 2012
はじめまして。

いまORACLE10gを使用している者です。

「PARTITION BY」について質問したいことがあります。

いまたとえば『売上テーブル』があって、
「売上年月日」、「売上金額」というカラムを持っているとします。

売上年月日 売上金額
---------- ------------
2012/07/10 500,000
2012/07/20 3,000,000
2012/07/30 1,000,000
2012/08/10 2,500,000
2012/08/20 5,000,000
2012/08/30 8,000,000
2012/09/10 300,000
2012/09/20 1,200,000
2012/09/30 3,000,000

とあるとして、
このテーブルからつぎのような結果を1行(!)で取得したいのです。

売上年月_7月 売上年月_8月 売上年月_9月
------------ ------------ ------------
4,500,000 15,500,000 4,500,000

そこで下記のように試みたのですが「PARTITION BY」の箇所で文法エラーになってしまいます。

select to_date(売上年月, 'yyyy/mm'),
sum(売上金額) over (partition by to_date(売上年月, 'yyyy/mm') group by to_date(売上年月, 'yyyy/mm')
range between to_date('2012/07', 'yyyy/mm') preceding and to_date('2012/07', 'yyyy/mm') following) 売上金額計_7月
sum(売上金額) over (partition by to_date(売上年月, 'yyyy/mm') group by to_date(売上年月, 'yyyy/mm')
range between to_date('2012/08', 'yyyy/mm') preceding and to_date('2012/08', 'yyyy/mm') following) 売上金額計_8月
sum(売上金額) over (partition by to_date(売上年月, 'yyyy/mm') group by to_date(売上年月, 'yyyy/mm')
range between to_date('2012/09', 'yyyy/mm') preceding and to_date('2012/09', 'yyyy/mm') following) 売上金額計_9月
from 売上
;

上記の結果をSQLで(PLSQLを使わずに)1行で取れる方法を教えてください。

宜しくお願いします。
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 11 2012
Added on Sep 13 2012
3 comments
2,104 views