2017-01-02 6 views
0

以下のデコードをSQLのCaseステートメントに変換する必要があります。複数の方法を試してみましたが、それは正しくできません。Decode to Caseステートメント

select 
DECODE(SIGN(A.column - to_date(( 
       DECODE('10/01/2011', 
        '%',to_char(A.column,'mm/dd/yyyy'),'10/01/2011')), 
        'mm/dd/yyyy')), 
     -1, 0, 
     A.Amount)) 
from A 
+0

お試しした内容とコードの問題を投稿してください。また、このクエリは機能していますか? – Aleksej

答えて

2
select case 
      when to_date(nullif(:dt,'%'),'mm/dd/yyyy') > A.column 
      then 0 
      else A.Amount 
     end 

from A   
+0

NULLIFは1つのことをプラスして新しいことを学んだ! –

0

ようなコードを処理するための最善のアプローチは、それを削除し、元の要件を見つけることです。

私はそれがあった疑いようCOLUMNパラメータ以上である場合、日付列がリターンAMOUNTを渡された場合

1)「%」が渡された場合、戻りAMOUNT

2)として

3)リターン0そう

これは、次のCASE文

につながります
select A."COLUMN", 
case when :1 = '%' then A.Amount 
when A."COLUMN" >= to_date(:2,'mm/dd/yyyy') then A.Amount 
else 0 end as amount 
from A;