#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