当我试图用ORACLE获取工作日列表时,我得到了ORA-00904。

在我的项目中,我需要使用一个叫做 getWorkingDay(beg_date Date,slider Integer). 这个函数用于查找从日期开始的第n个工作日。beg_date (其中 “n “是来自 slider).我想做的是得到在一个由 beg_dateend_date. 我想使用一个SELECT语句和上面的函数来获得工作日列表.我尝试了这个语句与 beg_date=sysdate-45end_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问题展示了如何实现这一点。

SQL查询,从双重数据中返回N条记录。

根据那个SO问题的答案,以及你问题中的例子,我相信类似下面的东西应该是可行的。

SELECT getWorkingDays(sysdate - (45 - LEVEL), 1)
  FROM DUAL
CONNECT BY LEVEL <= 45

当然,我无法真正测试它,因为我没有函数 getWorkingdays().

给TA打赏
共{{data.count}}人
人已打赏
未分类

使用Java泛型来明确指定返回的集合类型和集合元素的类型。

2022-9-9 6:36:18

未分类

显示非会员的WooCommerce会员价格。

2022-9-9 6:36:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索