Oracle:在选择中嵌套查询(比较日期)

偏差

我从表中提取了一些数据,其中一列是日期。我想做的是在结果中添加另一列,这将是到该日期为止的计算结果:

select dateX, (select dateX - CURRENT_DATE from dual)
from TableX

问题是如何将列传递给dateX嵌套的选定对象?我知道我所说的方式是错误的,因为表中不存在dateX dual

谢谢

编辑#1

实际上,这是我的查询:

 SELECT DISTINCT 
        id,site,TO_CHAR(dateX,'RRRR-MM-DD') startDate, (      
with test(d) as ( select TO_DATE(dateX, 'RRRR-MM-DD') from dual)
select case 
       when trunc(d) = trunc(sysdate) then 'PRESENT'
       when trunc(d) > trunc(sysdate) then 'FUTURE'
       when trunc(d) < trunc(sysdate) then 'PAST'
       end
from test
 ) startdateCompare
FROM 
        TableX 
WHERE 
        id = 6502 

startdateCompare应该包含根据日期的值dateX

当我执行它时,我得到:dateX : invalid identifier

数学家

假设dateX的类型为DATE,则无需在内部查询中调用TO_DATE。您甚至可能得到错误的答案。TO_DATE需要一个字符变量。您将其指定为dateX,因此Oracle会使用您的NLS设置将其转换为字符,该设置可能不是'RRRR-MM-DD'-如果不是,则当TO_DATE尝试将其转换回字符时可能会出错。日期以“ RRRR-MM-DD”格式显示。

您的查询不需要子查询。它应该是:

SELECT DISTINCT
   id, site, TO_CHAR(dateX, 'RRRR-MM-DD') startDate,
       case when trunc(dateX) = trunc(sysdate) then 'PRESENT'
            when trunc(dateX) > trunc(sysdate) then 'FUTURE'
            when trunc(dateX) < trunc(sysdate) then 'PAST'
       end  startdateCompare
FROM  (etc.)

最好,数学

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章