从SQL表获取间隔值

时间:2018-07-16 15:57:03

标签: sql sql-server tsql

我有一个问题尚未解决。基本上,假设您有一个“折扣”表,其中列出了一些星期和折扣。

.mg-b {
      margin-bottom: 25px !important;
    }

上面说的是,在第2周到第4周之间,折扣为60%。 在4到8之间是50%,依此类推。

在另一个表中,我将有一个星期列表,并希望加入我的折扣表,并参考折扣限制。所以对于第9周,它将是40%。对于第3周,它将是60%。

我可以自己加入折扣表,以便为每个方括号提供“最小/最大”值,但是从那里我不确定联接如何确定折扣。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

您可以使用outer apply

select w.*, d.discount
from weeks w outer apply
     (select top (1) d.*
      from discounts d
      where d.week <= w.week
      order by d.week desc
     ) d;

答案 1 :(得分:0)

您正在寻找subquery

select *, (select top (1) d1.Discount 
           from discounts d1 
           where d1.week <= w.week
           order by d1.week desc
          ) as discount
from week w;