-----表 A  表示 销售的表,能出现在A表都是销售过程中低于库存下限的数据
-----标记成红色的 是我为了说明问题 在数字上做的
-----字段内容 (rq,spid,caigy,djlx,shl)
2010-4-12 SPH00007026 高小勤     XSA 140
2010-4-13SPH00007026 高小勤     XSA 20

2010-4-12 SPH00007544 高小勤     XSA 50
2010-4-12 SPH00007748 高小勤     XSA 6
2010-4-13 SPH00007753 高小勤     XSA 280
2010-4-14 SPH00010034 高小勤     XSA 240
2010-4-15 SPH00010973 高小勤     XSA 437
2010-4-16 SPH00010973 高小勤     XSA 792
2010-4-17 SPH00010973 高小勤     XSA 802
2010-4-18 SPH00011184 高小勤     XSA 60
2010-4-19 SPH00011661 高小勤     XSA 0
2010-4-20 SPH00011765 高小勤     XSA 2114
2010-4-21 SPH00011814 高小勤     XSA 1
2010-4-22 SPH00011814 高小勤     XSA 0
2010-4-23 SPH00011814 高小勤     XSA 13

2010-4-24 SPH00000008 高小勤     XSA 180
2010-4-25 SPH00000049 高小勤     XSA 200
2010-4-26 SPH00000049 高小勤     XSA 300
2010-4-27 SPH00000049 高小勤     XSA 500
2010-4-28 SPH00000049 高小勤     XSA 550
......
表 B 表示进货表,字段内容和表A一样,其实两张表是一张 为了明显我用DJBS也就是('JHA','XSA')分开
字段内容 (rq,spid,caigy,djlx,shl)
2010-4-12 SPH00006501 高小勤     JHA 2410
2010-4-14 SPH00007026 高小勤     JHA 1845
2010-4-15 SPH00006932 高小勤     JHA 401
2010-4-16 SPH00006937 高小勤     JHA 766
2010-4-17 SPH00006939 高小勤     JHA 1020
2010-4-18 SPH00007542 高小勤     JHA 1700
2010-4-19 SPH00009929 高小勤     JHA 2119
2010-4-20 SPH00010290 高小勤     JHA 240
2010-4-20 SPH00011184 高小勤     JHA 5720
2010-4-21 SPH00010973 高小勤     JHA 902
2010-4-22 SPH00011098 高小勤     JHA 7720
2010-4-23 SPH00012895 高小勤     JHA 470
2010-4-24 SPH00012895 高小勤     JHA 570
2010-4-25 SPH00000008 高小勤     JHA 4180
2010-4-26 SPH00000052 高小勤     JHA 10800
2010-4-27 SPH00011184 高小勤     JHA 5720
2010-4-28 SPH00000201 高小勤     JHA 5382
2010-4-29 SPH00000251 高小勤     JHA 3295
2010-4-30 SPH00000318 高小勤     JHA 2400
2010-5-1 SPH00000336 高小勤     JHA 7120
2010-5-2 SPH00000373 高小勤     JHA 1378
......再说下考核KPI的标准,这是关于采购部门的考核,以上出现在A表的数据库则是库存低于下限的了,B表就是个采购的数据,记录这些商品哪天购进, 需要得到的结果就是当商品(spid)出现在A表 与B表中的此商品的日期差。(这样核算条目)
比如 商品SPH00007026第一次低于下限的时间是A表第一条记录2010-4-12,第二次出现在A表2010-4-13号,该商品出现在B表 在2010-4-14,这个时候核算天数差就应该用第一次出现记录的时间2010-4-12减去该商品第一次进货的日期2010-4-14,这样这个商品的条目数就为2;
不够明白的可以联系本人QQ:49008622,希望有这方面经验的大侠多多帮助

解决方案 »

  1.   

    I presume you have another table that stores the minimum stock-on-hand quantity. Let's say this table is called c, and it has spid and min_quantity column. Then the SQL to generate the lag between an initial alert and subsequent ordering action becomes
    select
    a.*, 'SOH' record_type
    from
    a
    union
    select
    select
    b.*, 'Purchase'
    from
    b

    select
    spid, first_purchase_rq, min(rq) first_alert_date, datediff(d, min(a.rq), first_purchase_rq)
    from
    (
    select
    a.spid, a.rq, min(b.rq) first_purchase_rq
    from
    a inner join b on
    a.spid=b.spid
    inner join sp c on
    a.spid=c.spid
    where
    a.rq<=b.rq and
    a.shl<c.min_quantity
    group by
    a.spid, a.rq
    ) c
    group by
    spid, first_purchase_rq
    This can get more complex. For example, you may need to look at whether the purchased quantity will bring stocking level back above min_quantity or not.
      

  2.   

    Oops. There is no need to for the first union statement.
      

  3.   


    Sorry, I don't use QQ. PM me with your MSN if you want help.
      

  4.   

    I have added u already - but no response for u thus far.
      

  5.   

    那把你MSN ID留下 我加你吧
      

  6.   

    I have PMed you my MSN ID