[pgsql-jp: 31407] Re: クロス集計について

Jun Kitamura kitamura @ zoozee.jp
2003年 11月 5日 (水) 09:51:58 JST


北村@逃避モードです。

> 谷田です。
> 
> On Tue, 04 Nov 2003 17:54:35 +0900
> Tetsuya Kakura <kakura @ saki.netwk.ntt-at.co.jp> wrote:
> 
> > > > MS Accessでいうところのクロス集計クエリーというのに相当
> > > > するSQLはPostgresではどのように書かれていますでしょうか?
> > > 一般には集約関数と呼ばれるものだと思います。
> > 多分集約関数ではなく SQL99 の CUBE のことだと思いますよ。
> > ORACLE や DB2 では実装済み(だとおもう)の OLAP 関係の構文のことでは?
> 
> すいません、私の記憶(Access2000時代ですが、このころからクロス集計クエリー
> という言葉がありました)が正しければ、そもそもAccess自体がCUBEなんて高尚
> な構文をサポートしていません。

Access2002で見てみましたが、PIVOT というものが実装されている
ようです。
Access95 のころからクロス集計クエリってありましたが、当時は
(見た目)1つのテーブルから複数のテーブルに OUTER JOIN で連結
して集計表を作成していたと記憶しています(のですが違うかも)。

PIVOT では 1つのテーブルから指定するカラムの値を列にもつこと
ができ、簡単に作表できますね(結構便利かも)。

Access95のころ、1つのテーブルから同じことをしたい場合は、カ
ラムの値を条件式に入れたクエリ(ビューみたいなもん)を複数つく
り、元のテーブルから OUTER JOIN して作表していたと思います。

給料明細など、社員コード,摘要コード,金額 という構成のテーブ
ルを、SQL一発で 
社員	合計	摘要1	摘要2	摘要3(以下略)
1		10,000	1,000	4,000	5,000
2		21,000	1,000	5,000	8,000
(以下略)
という表にすることができます<クロス集計クエリ





pgsql-jp メーリングリストの案内