首页 > 解决方案 > 如何返回一个依赖于另一个值的值?

问题描述

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

这是表格的示例

产品页

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

标签: sql-servertsql

解决方案


您需要连接表和 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

推荐阅读