我有桌子
表A
ID PRICE DATE
123 200 01-SEP-2015
456 500 01-AUG-2015
在我的查询中,我想显示日期(日期+ X个月)< sysdate else显示null。 我在该查询中使用变量时遇到问题。
记录1中的例子
(01-SEP-2015 + 3个月)= 01-DEC-2015不低于sysdate所以,我不想显示该日期。
但另一方面是第二次记录 (01-AUG-2015 + 3个月)= 01-NOV-2015小于sysdate所以,我想显示该日期。
declare
x number(5);
set x:=3;
select
a.ID,
a.PRICE,
case when( ADD_MONTHS(a.DATE, x) < sysdate() )
then a.DATE
else
NULL
end as NEW_DATE
from TableA a;
答案 0 :(得分:3)
您需要在变量名前加上&符号(&
),以告诉SQL * Plus替换变量的值:
declare
x number(5);
set x:=3;
select a.ID,
a.PRICE,
case
when ADD_MONTHS(a.DATE, &x) < sysdate then a.DATE
else NULL
end as NEW_DATE
from TableA a;
此外,DATE
是Oracle中的数据类型 - 不要将其用作列名。你可以这样做,但它会在某处导致问题。
祝你好运。