大侠们,你们好!
  我的问题是这样的。先看下面几组数据:
  比如今天是2012-07-04号:
 序号  日期       物料    库存 进货量 日用量   
  1 2012-07-04 东北大米   100   
  2 2012-07-05 东北大米   
  3 2012-07-06 东北大米   
  4 2012-07-07 东北大米   
  5 2012-07-08 东北大米   
  6 2012-07-09 东北大米   
  7 2012-07-10 东北大米   
  8 2012-07-11 东北大米   
  9 2012-07-12 东北大米  
  . . .
  . . .
  . . .     已知7月4号东北大米的库存是100吨,进货量与日用量手工录入,控件为spread,那么,当录入进货量跟日用量之后,比如:进货量为50,日用量为60,当保存之后,那么7月5号的库存就自动得出:100+50-60=90,当录入7月5号的进货量跟日用量时,如:进货量为50,日用量为60,保存之后,那么7月6号的库存就自动得出:90+50-60=80,依此类推。。也可以同时录入所列出日期的进货量与日用量,第二天的库存等于昨天的库存+昨天的进货量-昨天的日用量。
  求给出能自动算出第二天的库存的PLSQL代码。谢谢.  我的想法是这样的,先选出前一天库存,进货量,日用量select  KC,JHL,RYL  into  V_KC,V_JHL,V_RYL  from  A(表) 
where  to_date(CS_DATE,'yyyy-MM-dd')=to_date(P_DATE,'yyyy-MM-dd')-1
and   WL='东北大米'   ----P_DATE 指的是录入保存的那天日期。那么,P_KC=V_KC+V_JHL-V_RYL。
但是这样就会报错--文字与格式字符串不匹配。可是我检查了表中cs_date,并没有找出到底错在哪。。

解决方案 »

  1.   

    日期字段怎么不用date类型,而要用varchar2类型呢?
    这样要求检查所有的数据是不是符合"YYYY-MM-DD"的格式,且不能有空字符串
      

  2.   

    有時候可能是工具的問題,試下這樣
    To_Char(to_date(CS_DATE),'yyyy-MM-dd')=To_Char(To_Date(DATE)-1,'yyyy-MM-dd')
      

  3.   


    我不知你所说的空值是不是指的是cs_date的这个字段,这个字段的值都是有值的,而且值都是以yyyy-mm-dd存放的。
      

  4.   


      你好,把日期字段定义为date型也试过了,出现的问题是无效的月份。。
      

  5.   

    Update table_name set 庫存=null;
    Select sum(進貨量),(日用量) from table_name where 日期<=to_date('????-??-??','yyyy-mm-dd');
      

  6.   


      你好,我知道是日期格式出了问题。但真找不出是哪个日期,cs_date这个字段的值都是以yyyy-mm-dd存放的。库存字段不能去掉。它是用来记录往后每一天的数据的。至于你说的sum(进货量),我建议你还是重新看清楚我的题目。
      

  7.   

      谢谢大家的热心回答,我所列出的仅仅是我的想法,建议大家回答问题时可以忽略我的想法,考虑下能自动算出第二天的库存的PLSQL代码,谢谢!
      

  8.   

    初始庫存量總會有吧?
    那麼計算公式很簡單:初始庫存量+SUM(進貨量)-SUM(日用量)= 當天的庫存量,計算條件就是該天日期。