如何返回依赖于另一个值的值?

时间:2019-06-18 20:09:26

标签: sql-server tsql

我有一个产品表和一个费率表。每个产品都有一套不同的费率,每套都有标题费率。如何返回每种产品的标题费率?

这是表格的一个例子

产品pp

Id          Product
- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
P1          Product1
P2          Product2
P3          Product3

费率rr

Id       Productid        Headlinetier     Tier1    Tier2     Tier3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
1        P1               3                0.1       0.2         0.3
2        P2               1                0.4       0.5         0.6
3        P3               2                0.7       0.8         0.9

如何获得以下结果?

pp.Product                rr.Headlinerate
- - - - - - - - - - - - - - - - - - - - - - - - - - 
P1                        0.3
P2                        0.4
P3                        0.8

1 个答案:

答案 0 :(得分:3)

您需要连接表和CASE语句以在3层之间进行选择:

select
  p.product,
  case r.headlinetier
    when 1 then r.tier1
    when 2 then r.tier2
    when 3 then r.tier3
  end headlinerate
from products p inner join rates r
on r.productid = p.id

如果您的版本是SQL Server 2012+,则可以使用choose()

select
  p.product,
  choose(r.headlinetier, r.tier1, r.tier2, r.tier3) headlinerate
from products p inner join rates r
on r.productid = p.id