SQL Server 2008: обновить столбцы, если он пуст - PullRequest
0 голосов
/ 27 марта 2012

В моей таблице 100 столбцов, и я хочу обновить только столбцы со значением NULL.

Я сравниваю столбцы основной таблицы с временной таблицей и пытаюсь обновить значение столбца основной таблицы значением столбца временной таблицы.

Пожалуйста, помогите мне в этом.

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Что-то вроде:

Update t1
set field1 = coalesce(t1.field1, 'test')
  , field2 = coalesce(t1.field2, t1.field1)
  , field3 = coalesce(t1.field3, t2.field1)
  , field4 = coalesce(t1.field4, t2.field1, t2.field3)

FROM table1 t1
join table2 t2
 on t1.someid = t2.someId

Я дал вам три примера различных способов, которыми вы можете обновить, если поле пустое.Первый показывает, как установить его для текстового значения, второй - как установить его для другого поля в той же таблице, а третий - для того, где вы получаете значение из другой таблицы.В четвертой части показано, что делать, если значение, которое вы устанавливаете, также равно nul и, следовательно, вы хотите использовать еще одно значение вместо него.Вам необходимо написать объединенное обновление для каждого из 100 столбцов.

0 голосов
/ 27 марта 2012

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

Это требует, чтобы главная и временная таблицы могли быть соединены в ключевом поле с именем Key в моем случае.

UPDATE m
SET
  m.field1 = ISNULL(m.field1, t.field1), 
  ...
FROM
  MasterTable m
  INNER JOIN TempTable t ON t.Key = m.Key
0 голосов
/ 27 марта 2012
UPDATE B SET B.value = T.value
FROM
tblMaster B 
   INNER JOIN tblTemp T ON B.ID = T.ID
WHERE B.value IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...