2017-01-02 7 views
0

我需要將下面的解碼轉換爲SQL中的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使加一 - 學到了新東西! –

0

最好的辦法來處理這樣的代碼是將其刪除,找到原來的要求。

我懷疑它是如

1)如果「%」被傳遞迴AMOUNT

2)如果日期字符串傳遞返回AMOUNT如果COLUMN大於參數大於或等於

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;