在我的项目中,我需要使用一个叫做 getWorkingDay(beg_date Date,slider Integer)
. 这个函数用于查找从日期开始的第n个工作日。beg_date
(其中 "n "是来自 slider
).我想做的是得到在一个由 beg_date
和 end_date
. 我想使用一个SELECT语句和上面的函数来获得工作日列表.我尝试了这个语句与 beg_date=sysdate-45
和 end_date=sysdate
:
SELECT * FROM(
SELECT getworkingDay(sysdate,slide) dt FROM DUAL
WHERE slide>0 and slide<=sysdate-(sysdate-45))
WHERE dt >=sysdate-45
我得到了以下错误信息:
ORA-00904:"SLIDE":无效标识符。
你能帮我找到解决这个问题的方法吗?
你的函数。getWorkingDays
只适用于一个单一的日期。如果你想让它适用于一系列的日期,那么你需要为日期范围内的每一天调用一次。以你的问题为例。sysdate - 45
意思是你需要调用它45次,如
select getWorkingDays(sysdate - 45, 1) from dual
union
select getWorkingDays(sysdate - 44, 1) from dual
union
select getWorkingDays(sysdate - 43, 1) from dual
我希望你能明白我的意思。我把你的变量1(一)替换成了 slider
. 你需要把它定义为一个变量。你声称你使用的是 SQL开发人员 所以我建议你参考该产品的文档,看看如何定义变量。
另外,你也可以写一个SQL查询,准确地返回45行(同样是45行,因为你在问题中使用的就是这个例子)。我相信下面的SO问题展示了如何实现这一点。
根据那个SO问题的答案,以及你问题中的例子,我相信类似下面的东西应该是可行的。
SELECT getWorkingDays(sysdate - (45 - LEVEL), 1)
FROM DUAL
CONNECT BY LEVEL <= 45
当然,我无法真正测试它,因为我没有函数 getWorkingdays()
.
没有列名,因为滑动的双。你需要从你的表中选择,其中包括 slide
专栏