Как сделать объединение с несколькими таблицами для расчета значения? - PullRequest
0 голосов
/ 23 декабря 2019

Я новичок в SQL и пытаюсь найти наиболее эффективный способ использования операторов case / when и join. Дайте мне знать, как я должен подходить к этому. См. Таблицы и логику ниже:

  • Узнайте, является ли магазин, связанный с каждой транзакцией, H, M или L
  • После нахождениявыведите классификацию H, M или L из таблицы B, затем объедините с таблицей 3, чтобы найти соответствующее скорректированное значение
  • . В качестве примера, транзакция 1 будет классифицирована как H и основана, а критерием B является X,поэтому соответствующее скорректированное значение будет 0,01

1 Ответ

1 голос
/ 23 декабря 2019

Узнайте, является ли хранилище, связанное с каждой транзакцией, H, M или L

. Вы можете использовать объединение Table_B для столбца хранилища, чтобы получить Creteria_A

    select A.*,B.Creteria_A
    from Table_A  A
    left join Table_B B on A.store = B.store

После определения классификации H, M или L из таблицы B, затем объедините ее с таблицей 3, чтобы найти соответствующее скорректированное значение
В качестве примера, транзакция 1 будет классифицирована как H и основана, а критерии BX, поэтому соответствующее скорректированное значение будет 0,01

, вы можете использовать sql-сервер cte update, чтобы сделать это

with cte as (
    select A.*,B.Creteria_A,C.Adjusted_Value
    from Table_A  A
    join Table_B B on A.store = B.store
    join Table_C C on B.record = C.record
)
update cte set [value + Adjusted Value] = Value + Adjusted_Value;

спасибо, Вей! Есть ли способ сделать это без CTE?

вы можете использовать update join

UPDATE
    Table_A  
SET
    [value + Adjusted Value] = Value + C.Adjusted_Value;
FROM 
    Table_A  A
    join Table_B B on A.store = B.store
    join Table_C C on B.record = C.record
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...