Заполните нулевые значения столбца значениями одной и той же строки, но другого столбца

#sql #sql-server #tsql

Вопрос:

У меня есть таблица, и я хочу «скопировать» значения столбца findoc и вставить их в строки столбца findocs , которые имеют нулевые значения.

стол

Комментарии:

1. В соответствии с руководством по вопросам, пожалуйста, покажите, что вы пробовали, и расскажите нам, что вы нашли (на этом сайте или в другом месте) и почему это не соответствует вашим потребностям. И, пожалуйста, не публикуйте изображения кода, данных, сообщений об ошибках и т. Д. — Скопируйте или введите текст в вопрос. Пожалуйста, зарезервируйте использование изображений для диаграмм или демонстрации ошибок рендеринга, вещей, которые невозможно точно описать с помощью текста.

Ответ №1:

Вы можете использовать coalesce() в запросе:

 select coalesce(finddocs, finddoc) sa finddocs, finddoc, sum
from t;
 

Или изменить значения с помощью update :

 update t
    set finddocs = finddoc
    where finddocs is null;
 

Ответ №2:

Вы можете использовать COALESCE() для получения первого ненулевого значения:

 UPDATE dbo.tablename SET findocs = COALESCE(findocs, findoc);
 

Хотя более эффективным способом было бы отфильтровать:

 UPDATE dbo.tablename SET findocs = findoc 
  WHERE findocs IS NULL AND findoc IS NOT NULL;