Oracle SQL最小值不是空的

时间:2015-06-09 18:27:34

标签: sql oracle

采取以下查询...

select
    trunc(dateX)-trunc(sysdate) daysTilX,
    trunc(dateY)-trunc(sysdate) daysTilY,
    least(trunc(dateX)-trunc(sysdate),trunc(dateY)-trunc(sysdate)) leastOfTheTwo
from myTable

如果dateX或dateY为null,则least()返回null。我需要弄清楚如果dateX和dateY都为null,如何让leastOfTheTwo列返回null,否则,我想要数字。有什么想法吗?

更新要明确,我不能在日期使用nvl,因为它们代表截止日期。含义-1(延迟一天),0(今天),1(明天),null(既未设置截止日期)。

2 个答案:

答案 0 :(得分:1)

select
    trunc(dateX)-trunc(sysdate) daysTilX,
    trunc(dateY)-trunc(sysdate) daysTilY,
    least(trunc(nvl(dateX, dateY))-trunc(sysdate),trunc(nvl(dateY, dateX))-trunc(sysdate)) leastOfTheTwo
from myTable

答案 1 :(得分:0)

select
    trunc(dateX)-trunc(sysdate) daysTilX,
    trunc(dateY)-trunc(sysdate) daysTilY,
    least(nvl(trunc(dateX)-trunc(sysdate),0),nvl(trunc(dateY)-trunc(sysdate),0)) leastOfTheTwo
from myTable