解码为案例陈述

时间:2017-01-02 09:25:27

标签: sql oracle

我需要在SQL中将以下解码转换为Case语句。尝试了多种方式,但无法做到正确。

pre_tasks

2 个答案:

答案 0 :(得分:2)

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

from    A        

答案 1 :(得分: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;