一张销售表sale,其中有3列 分别为:商品名,日期,销量。 3月31号商品A销售11吨 结存库存量为100吨,4月1日 销售10吨、3日销售20吨、19日销售2吨。 
   通过查询的结果为:
   商品名,  日期,     销量    库存量
     A     3月31号       11       100
     A     4月1号        10       90
     A     4月3号        20       70
     A     4月19号       2        68 oracle有现成的分析函数吗? 或用存储过程该如何实现 ?

解决方案 »

  1.   

    可以使用子查询实现,语句如下,不过为何不在SALE表中加入一个库存字段呢。
    SELECT A.*,100-(SELECT SUM(SALE_NUM) FROM SALE B WHERE B.SALE_DATE<=A.SALE_DATE)  FROM SALE A;
      

  2.   


    你应该有两张表:库存表,销售表。
    库存表
       商品名,库存量
    销售表
       商品名,销售日期,销售量
    你还应该建立另外一张表:
    销售信息:
       商品名,销售日期,销售量,库存量
    --
    用触发器来实现:
    1.每次更新销售表,都向销售信息表中添加商品销售信息
        销售信息表:库存量=库存表.库存量-销售量
    2.每次更新销售表,就立即更新库存表:
        库存表:库存量=old.库存量-销售量重复以上触发,一直到库存表中数量减少到一定限度,比如库存量<100
    你的另外一个触发器就会向订单表orders中添加需要订购的商品信息了.
      

  3.   

    desc库存量就可实现了。不用考虑存储过程和分析函数了。一个查询就可实现的问题。