[前][次][番号順一覧][スレッド一覧]

mysql:477

From: Satoshi Koiwa <Satoshi Koiwa <koiwa@xxxxxxxxxx>>
Date: Sat, 26 Dec 98 18:54:24 +0900
Subject: [mysql 477] Re: クロス集計の方法


小岩です。

>mysqlでやる場合、decodeがないんで
>select
>       if(地区コード = 1,1,if(地区コード= 2,2,0)) as 地区,
>       sum(売上金額)
>>from 売上テーブル
>group by 地区

これだと縦横にならないですよねー、スマートなのは間違いないですが。

>で、decode って、何なんでしょうか?
>お教え下さい。m(_ _)m

Oracle本には書いてあると思うんですが、
     decode(Exp, A, B, C, D, Z)
というように書きます。この関数を実行するとExpの結果がAだったらBが、Cだった
らDが、それ以外だったらZを返します。Expは必須で、A以下は基本的には2個セット
でいくつでも書けます(上限はあるんだろうけれど上限にあたったことはない)。A以
下が奇数個になった場合だけ、default値になります。偶数個で一連のセットの中に
該当する値がなかったらNULLが返る。
     decode(県コ−ド,  '01', '北海道',
                         '02', '青森県',
                         '03', '岩手県',
                         '04', '宮城県',
                         '13', '東京都
                         'それ以外の府県')
とか、
     decode(性別コ−ド, '1', '男', '2','女', '性別不明')
とか、
     decode(性別コ−ド, '1', '男', '女')
とかという使い方や、
     decode(県コ−ド,  '01', decode(性別コ−ド,
                                        '1', 'えびす男', 'えびす女'),
                         '12', decode(性別コ−ド,
                                        '1', 'あづま男', 'あづま女'),
                         decode(性別コ−ド,
                                        '1', 'その他のおのこ', 'その他のお
とめ')
という感じの入れ子を重ねていく使い方なんかがあります。SELECT節でもWHERE節で
もGROUP BY節でもどこでも書けるんで便利だけれど、物凄いものを書かれると解析
が大変。

[前][次][番号順一覧][スレッド一覧]

->     477 1998-12-26 18:54 [Satoshi Koiwa <koiwa] Re: クロス集計の方法                    
       478 1998-12-27 01:12 ┣[<endot@xxxxxxxxxx>  ]                                       
       479 1998-12-28 07:44 ┣[Tamon Nomura <tamon@]                                       
       480 1998-12-28 09:49 ┗[民斗 <tommy@xxxxxxxx]