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

mysql:480

From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Mon, 28 Dec 1998 09:49:47 +0900
Subject: [mysql 480] Re: クロス集計の方法


民斗です。

元々のクロス集計というのは良く知りませんが、

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

> Oracle本には書いてあると思うんですが、
>      decode(Exp, A, B, C, D, Z)
> というように書きます。この関数を実行するとExpの結果がAだったらBが、Cだった
> らDが、それ以外だったらZを返します。Expは必須で、A以下は基本的には2個セット
> でいくつでも書けます(上限はあるんだろうけれど上限にあたったことはない)。A以
> 下が奇数個になった場合だけ、default値になります。偶数個で一連のセットの中に
> 該当する値がなかったらNULLが返る。

この機能なら、MySQL では if を使うより、ELT と FIELD を使った方が
読みやすいかもしれません。

>      decode(県コ−ド,  '01', '北海道',
>                          '02', '青森県',
>                          '03', '岩手県',
>                          '04', '宮城県',
>                          '13', '東京都
>                          'それ以外の府県')

  ELT(FIELD(県コード, '01, '02', '03', '04', '13'),
    '北海道', '青森県', '岩手県', '宮城県', '東京都')

>      decode(性別コ−ド, '1', '男', '2','女', '性別不明')
> とか、
>      decode(性別コ−ド, '1', '男', '女')

  ELT(性別コード, '男', '女')

リスト内に無い場合は FIELD は 0 を、ELT は NULL を返すので、

  IFNULL(ELT(性別コード, '男', '女'), '性別不明')

とかもできます。

--
民斗 <tommy@xxxxxxxxxx>

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

       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]