表1部份数据
天数   大类  金额
28      001  100
50      001  200表2部分数据
大类   天数  比例
001    30    0.05
001    60    0.10
要得到的结果天数 大类     金额   比例
28   001      100    0.05
50   001      200    0.10我是这样的 
select * from 表1 left join 表2 on (表1.大类=表2.大类 and 表1.天数<=表2.天数)
但出来不是这个结果,    
成了
天数 大类     金额   比例
28   001      100    0.05
28   001      100    0
50   001      200    0.10
50   001      200    0

解决方案 »

  1.   

    SELECT *, 比例 = (SELECT TOP 1 比例 FROM(SELECT 比例 FROM 表2 WHERE 大类 = A.大类 AND 天数<=A.天数)AA ORDER BY 天数 DESC)
    FROM 表1 A
      

  2.   

    select * 
    from 表1 t1 left join 表2 t2
    where t1.大类=t2.大类 and t2.天数 = (select min(天数) from 表2 where 天数 >= t1.天数)
      

  3.   

    select a.天数,a.大类,a.金额,b.比例 from 表1 a , 表2 b
      

  4.   

    select T.天数,T.大类,T.金额,TT.比例
    from ( select 天数,大类,金额,min([天数2]) as [天数2] from ( select 表1.*,表2.天数 as [天数2] from 表1  inner join 表2  on 表1.大类=表2.大类 and 表1.天数<=表2.天数) A ) T
    inner join 表2 TT
    on T.大类=TT.大类 and T.天数2=TT.天数
      

  5.   

    不好意思,刚才说错了
    DECLARE @ta TABLE([天数] int, [大类] varchar(10), [金额] int)
    INSERT INTO @ta
        SELECT  28, '001', 100
        UNION ALL SELECT 50, '001', 200
    DECLARE @tb TABLE([大类] int, [天数] varchar(10), [比例] decimal(10, 4))
    INSERT INTO @tb
        SELECT  001, '30', 0.05
        UNION ALL SELECT 001, '60', 0.10SELECT *,比例 = (SELECT TOP 1 比例 FROM @tb WHERE 大类 = A.大类 AND 天数 > A.天数 ORDER BY 天数) FROM @ta A
      

  6.   

    测了一下,,coolingpipe(冷箫轻笛)   接近正确,但我的表1中如果还有一条数据天数比如是100天,但在表2 的基础表中没有,这种你的显示就没有比例出来,因为100天我肯定是算了>60
      

  7.   

    select * from 
    (select * from 表1 left join 表2 on (表1.大类=表2.大类 and 表1.天数<=表2.天数))t
    where t.比例<>0