我在oracle工作,是新编码和新网站,所以我提前为新手问题道歉:
我有一个我试图运行的脚本将返回下个月的总和'销售订单并将该数字与我们的预算销售预测进行比较。上个月(11月),当我设置它时,它工作得很好但是现在已经12月了,我相信它有问题找出下个月是新的一年。
基本上我只想总结下个月的销售订单记录,并将该数字与我们的预测数字进行比较。
这是我到目前为止所做的事情(我确定我犯了很多语法错误所以请耐心等待!)
select
"Backlog", "Forecast Amount" , round("Backlog"/"Forecast Amount",4) as "Backlog Percent"
from
(select round(sum(NVL(unit_price,0) *NVL( ship_quan,0)),2) as "Backlog"
from v_backlog_releases
where
(TO_CHAR(V_BACKLOG_RELEASES.PROMISE_DATE,'MM\YYYY') = TO_CHAR(sysdate,'MM\YYYY')+1)),
(select budamount as "Forecast Amount"
from
glbudget,
glperiods
where
glbudget.glperiods_id=glperiods.id and
TO_CHAR(GLPERIODS.START_DATE,'MM') = TO_CHAR(sysdate,'MM')+1)
系统不会让我发布输出的图像,因为我太新了。基本上我应该得到这样的东西:
积压|预测金额|积压百分比
100,000 | 200,000 | 0.50
积压列只是下个月发货的所有订单的船舶数量*价格的总和。
答案 0 :(得分:0)
您的问题是,12月TO_CHAR(sysdate, 'MM') + 1
将返回13而不是明年的1。显然没有第13个月......
尝试使用ADD_MONTHS(sysdate, 1)
代替并根据需要处理该结果。最好的建议是尽可能将日期作为日期而不是字符处理。
根据评论更新:
尝试使用:
EXTRACT(MONTH FROM GLPERIODS.START_DATE) = EXTRACT(MONTH FROM ADD_MONTHS(sysdate, 1))
文档:https://docs.oracle.com/cd/B14117_01/server.101/b10759/functions045.htm