我需要将下面的解码转换为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