Как обновить несколько столбцов таблицы, используя данные другой таблицы в SQL?

#sql #sql-server

#sql #sql-server

Вопрос:

У меня есть две таблицы A, B

A

 Id  Col1  Col2 Col3
100  Null Null  0
  

B

 Id   Colx   Colz Coly
100  1234    10   4           
100  2345    12   4 
  

Ожидаемый результат:

 Id  Col1  Col2 Col3
100  1234 2345  4
  

Я пытаюсь получить Colx из таблицы B Col1 , Col2 соответственно, на основе Colz , однако, не получая ожидаемых результатов.
ниже приведен мой запрос —

  UPDATE    a
  SET       a.Col1 = CASE WHEN b.Colz=10 THEN b.Colx END,
            a.Col2 = CASE WHEN b.Colz=12 THEN b.Colx END,
            a.Col3=b.Coly
  FROM      A a
            JOIN B b  ON b.Id = a.Id
  

Пожалуйста, помогите

Ответ №1:

Вы можете присоединиться к одной и той же таблице дважды с разными условиями, например:

 UPDATE    a
  SET       a.Col1 = b1.Colx 
            a.Col2 = b2.Colx,
            a.Col3=b1.Coly
  FROM      A a
  JOIN B b1  ON b1.Id = a.Id AND b1.Colz=10 
  JOIN B b2  ON b2.Id = a.Id AND b2.Colz=12