mysql:471
From: (遠藤 俊裕) <<endo@xxxxxxxxxx>>
Date: Fri, 25 Dec 1998 18:31:40 +0900
Subject: [mysql 471] Re: クロス集計の方法
遠藤です。 >>やっぱり、それ専用のコマンドって無いんですね。 >># なんか、Oracle はあるそうで。 > >うっそー、Oracleって私のメシのタネですけれど、DBエンジンではそんなコマンド >知らない。PL/SQLかSQLにそんなのあるってことですか? 教えて教えて教えて教えて 受け売りなんで、私に質問しないでね。^^; --------- 以下、抜粋。(出典:Nifty FDELPHI)-------- >2.いわゆるクロス集計を一発でやることは出来ないでしょうか? ターゲットDBがOracle以外の場合には使えませんが、 Oracle7をお使いであるなら、decode関数を使って可能です。 ただし、列の並びは決め打ちになりますが。 こういう売上テーブルがあったとします。 地区コード 売上金額 1 1000 1 2000 2 15000 3 3000 3 5000 4 30000 (以下続く) で、これを地区コードが1のもの、2のもの、それ以外で、 集計します。 select sum(decode(地区コード,1,売上金額,0)), sum(decode(地区コード,2,売上金額,0)), sum(decode(地区コード,1,0,2,0,売上金額)) from 売上テーブル 但しこれの難点は、その他の集計を書く時に、 その他以外の項目を全て列挙して0を戻すように書かなければいけない事です。 月別などのように、完全に区分けが固定化出来るのであれば便利です。 尚、「プログラマのためのSQL」という本に、クロス集計の作り方が 書いてあります。 もし宜しければ読んでみてください。 もし、この手のものが多いようであれば、ビューにしてしまうのも手ですね。 私はExcelのピボットテーブルに任せるようにしてますが(^^;
470 1998-12-25 18:08 [Satoshi Koiwa <koiwa] Re: クロス集計の方法 -> 471 1998-12-25 18:31 ┗[<endo@xxxxxxxxxx> ] 475 1998-12-26 14:08 ┗[Tamon Nomura <tamon@] 476 1998-12-26 17:35 ┗[<endo@xxxxxxxxxx> ]