我需要將下面的解碼轉換爲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
我需要將下面的解碼轉換爲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
select case
when to_date(nullif(:dt,'%'),'mm/dd/yyyy') > A.column
then 0
else A.Amount
end
from A
NULLIF使加一 - 學到了新東西! –
最好的辦法來處理這樣的代碼是將其刪除,找到原來的要求。
我懷疑它是如
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;
請發佈您嘗試的以及您的代碼問題。此外,這個查詢是否工作? – Aleksej