2009年1月 6日(火) 12:03 JST
[SQL]CASE文ってすごいじゃん
- 2008年11月20日(木) 19:11 JST
-
- 投稿者:
-
- 閲覧件数
- 260
DB/2 で Oracle の DECODE に相当することを書きたいと思ってネットをさまよっていると...
CASE なるものを発見、DECODE よりもはるかに使える!(タイプ量が多いけど)
ちなみにMicrosoft では Access の iif に相当すると説明して良けれども、項目1つに対して複数の条件をかけるから、switch か choose に近いかな?
- 既存のコード体系を新しい体系に変換する(DECODE 関数だと2回使用しないといけないけれど1回で書ける)
SELECT count(*), CASE code WHEN 'E' THEN '連邦' WHEN 'Z' THEN 'ジオン' ELSE '中立' END FROM table1 GROUP BY code;
- 異なる条件の集計を一つの SQL で行なう
SELECT SUM(CASE WHEN code = 'E' THEN 1 ELSE 0 END), -- 連邦兵の人数 SUM(CASE WHEN code = 'Z' THEN 1 ELSE 0 END) -- ジオン兵の人数 FROM table1;
Microsoft SQL Server, Oracle, MySQL, PostgreSQL 及び DB/2 で使用できることを確認。ANSI SQL92 で使用できるらしいから、ほとんどの DBMS で使用できるんだろうな。
トラックバック
- このエントリのトラックバックURL:
- http://www.blackcatlab.com/trackback.php/ProgramingFAQ_sql00001
この記事にはトラックバック・コメントがありません。

おしらせ
ブログ
くろねこのつぶやき
株始めてみようかな
コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。