如何添加一个月到一个月

时间:2014-12-02 18:33:22

标签: oracle

我在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

积压列只是下个月发货的所有订单的船舶数量*价格的总和。

1 个答案:

答案 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