2017-12-07 7 views
1

アカウント番号、決済手数料、払い戻し額、払い戻し理由についての情報を持つテーブルからクエリを実行しています。テーブルはgroup_write_offと呼ばれ、テーブル見出し、account_id、charge_settled_date、total_charge_amount、amount_written_off、write_off_reasonと呼ばれます。私が何をしたいのか、私には、そうOracle SQL、IF文

Select * from group_write_off

を通じて、すべてのものを引き出しているが、write_off_reasonは、単語「監査」を含むどのような場合のために、私はamount_written_offが0(ゼロ)と表示したい、すべての他人のために元のamount_written_offを表示します。

多くのありがとうございます。

答えて

5

CASE式を使用します。

SELECT CASE WHEN write_off_reason='Audit' THEN 0 ELSE amount_written_off END 
FROM group_write_off 

また監査言葉は、あなたが複数の単語

SELECT CASE WHEN INSTR(write_off_reason,'Audit') = 0 THEN 0 
     WHEN INSTR(write_off_reason,'admin') = 0 THEN 0 
     ELSE amount_written_off END 
FROM group_write_off 
+0

優れ、多くの感謝をしたい場合はINSTR()機能

SELECT CASE WHEN INSTR(write_off_reason,'Audit') = 0 THEN 0 ELSE amount_written_off END FROM group_write_off 

を使用して、列write_off_reasonに存在しているかどうかをチェックするために、以下のしてみてください。追加のwrite_off理由、例えば「admin」という単語を含むwrite_off_reasonを追加したい場合は、これを上記のコードにどのように挿入すればよいでしょうか? –

+0

より多くのWHEN式を使用する..編集された回答をチェック.. –

+0

@ ex-patriot –