テーブル
FieldA FieldB FieldC FieldD
------ ------ ------ ------
5 5 8 9
5 7 8 9
7 5 8 9
Oracle8のSQLで、
FieldAがFieldBより小さい場合は、FieldCを、
そうでない場合はFieldDを取得する
出力結果
FieldA FieldB FieldC FieldD Val
------ ------ ------ ------ ---
5 5 8 9 9
5 7 8 9 8
7 5 8 9 9
select FieldA,FieldB,FieldC,FieldD, decode(sign(FieldA-FieldB),-1,FieldC,FieldD) as Val from (select 5 as FieldA,5 as FieldB,8 as FieldC,9 as FieldD from dual union select 5,7,8,9 from dual union select 7,5,8,9 from dual);
FieldAがFieldBより小さいというのは、 不等式で表すと、 FieldA < FieldB となり、移項して、 FieldA - FieldB < 0 として、sign関数を使ってます