#navi(ORACLE)
*DECODE 関数 [#n8ca860e]

※ Decode関数は、Oracle 独自関数のため、標準の CASE 式で記述した方が移植性の点で優れる。(性能は不明。) 

※ Oracle 8 までは、CASE 式がサポートされていないため、Decode 関数を使用する。

field1 = '10' の件数を数える
 select sum(decode(field1,'10',1,0)) FROM table1

 select count(field1) FROM table1 where field1 ='10' 
と同じだが
 select 
  sum(decode(field1,'10',1,0)), 
  sum(decode(field1,'20',1,0)) 
 FROM table1
の様な書き方ができるので、集計表示などで便利。

field2 が 1 なら '男' 、それ以外なら '女' と出力する。
 select decode (field2,1,'男','女') from  table2 ; 
field2 が 1 なら '男' 、2 なら'女'、それ以外なら'不明'と出力する。
 select decode (field2,1,'男',2,'女','不明') from  table2 ;

** CASE 式による書き直し [#zc23d2e1]
上記の例
 select 
  sum(decode(field1,'10',1,0)), 
  sum(decode(field1,'20',1,0)) 
 FROM table1;
を、CASE 式にて書き直してみると、
 select 
  sum(case when field1='10' then 1 else 0 end), 
  sum(case when field1='20' then 1 else 0 end) 
 FROM table1;
となります。

#vote(参考になった[14],参考にならなかった[2])
#vote(参考になった[15],参考にならなかった[2])

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS