表1 发货记录 
  客户  产品  发货日期    扣率
  A      B    2011-4-2    ?
  。
  。
  。表2 折扣表
  客户 产品 折扣日期   扣率
  A     B   2011-1-3   0.1
  A     B   2011-3-3   0.3
  A     B   2011-8-3   0.5
  。
  。
  。
表1的发货日期2011-4-2 是在 2011-3-3 与 2011-8-3 之间, 希望能取到 0.3 的扣率写到表一扣率,如何算呢?万分感谢!
表一,表二 都是很多客户,很多产品的,根据客户和产品以及时间段三个条件匹配

解决方案 »

  1.   

    select top 1 扣率 from 折扣表 where 折扣日期 < 2011-4-2
    and 客户 = 'A' and  产品 = 'B'
    order by 折扣日期 desc
      

  2.   


    select top 1 扣率  from 表2  
    where 客户 = 'A' and 产品 = 'B' and 
     折扣日期 between '2011-3-3' and '2011-8-3' order by 折扣日期 
      

  3.   

    找最近一条的???
    select *,
        (select top 1 扣率 from 折扣表 where 客户 = t.客户 and 产品 = t.产品 and 折扣日期 <= t.发货日期 order by 折扣日期 desc) 扣率
    from 发货记录表 t
      

  4.   

    select
     *,
     (select top 1 扣率 from 折扣表 where 客户 = t.客户 and 产品 = t.产品 and 折扣日期 <= t.发货日期 order by 折扣日期 desc) 扣率
    from
     发货记录表 t