#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;