2017-02-16 4 views
0

Использование SQL 2012Обновление нескольких значений полей между записями в двух таблицах

У меня есть две таблицы, которые существуют один к одному на M_id (нет дубликатов в любой таблице), но не идентичные записи, но есть некоторые из одинаковые поля, но только в разных столбцах.

Мне нужно выполнить проверку значения, и если в определенной ячейке в таблице A появится «1», мне нужно обновить это поле до «1» в таблице Б.

Пример:

TableA

M_id | L1 | L2 | L3 
100 | 0 | 1 | 0 

TableB

M_id | S1 | S2 | S3 
100 | 0 | 0 | 0 

Взаимоотношение здесь L2 = S3, так что, если "1" встречается в L2, мне нужно S3 быть обновлен до «1». Все значения tableB будут «0» до тех пор, пока они не будут обновлены.

Другие столбцы нуждаются в обновлениях так же, как L1 = S2 и L3 = S1 и т. Д.

Не так уверен, как это может произойти.

Спасибо,

MP

ответ

0

Если я понимаю, что вы правильно значит.

WITH cte (
    SELECT 
     a.L2 
     , b.S3 
    FROM 
     tableB b 
     JOIN tableA a ON a.M_id = b.M_id 
    WHERE 
     b.L2 = 1 
) 
UPDATE cte 
SET S3 = L2, S2 = L1, S1 = L3 
+0

Привет, ну присоединиться к потребности быть путем сопоставления M_id сандрова, то проверка, чтобы увидеть, если L's иметь значение «1», они должны обновить свои поля «соответствия» в TableB с отношениями от L1 = S2, L2 = S3 и L3 = S1. – mrpush

+0

@mrpush Обновлено. – DVT

+0

Я попробую! Спасибо! – mrpush