我从表中提取了一些数据,其中一列是日期。我想做的是在结果中添加另一列,这将是到该日期为止的计算结果:
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] 删除。
我来说两句