Как вернуть значение, которое зависит от другого значения? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица продуктов и таблица тарифов.Каждый продукт имеет набор различных тарифов, и каждый набор имеет заголовок.Как мне вернуть заголовок ставки для каждого продукта?

Вот пример таблиц

Продукты 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 Ответ

3 голосов
/ 18 июня 2019

Вам необходимо объединить таблицы и оператор CASE, чтобы выбрать один из трех уровней:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...