Я никогда не использовал Case раньше и не знаю, как это сделать, но у нас были некоторые проблемы, делающие оптовую модернизацию из-за изменения адресов, которые теперь поступают в данные, которые не использовались к. Я пытаюсь использовать его как выражение if then, но я уверен, что делаю неправильно. Мне нужно обновлять адреса, когда поле пусто или пусто.Случай, когда нужно обновлять сразу несколько столбцов
UPDATE defendants_ALL_Fixed
SET tiffAdd = tiffAdds.Add1, tiffZip = tiffAdds.Zip, tiffCity = tiffAdds.City, tiffState = tiffAdds.State
FROM defendants_ALL_Fixed INNER JOIN
tiffAdds ON defendants_ALL_Fixed.tiff = tiffAdds.Tiff
WHERE (defendants_ALL_Fixed.tiff = tiffAdds.Tiff)
Я попытался обертывание, что в случае заявления, такие как:
SELECT
a.tiffAdd
, CASE WHEN a.tiffAdd = '' THEN
UPDATE defendants_ALL_Fixed
SET tiffAdd = tiffAdds.Add1, tiffZip = tiffAdds.Zip, tiffCity = tiffAdds.City, tiffState = tiffAdds.State
FROM defendants_ALL_Fixed INNER JOIN
tiffAdds ON defendants_ALL_Fixed.tiff = tiffAdds.Tiff
WHERE (defendants_ALL_Fixed.tiff = tiffAdds.Tiff)
END
FROM defendants_ALL_Fixed a
Который не работает, и я понимаю, почему он не работает, но понятия не имею, куда идти отсюда и любая помощь было бы замечательно. Мы используем это только один раз в месяц для обновления данных (около 1,5 миллионов записей), а ресурсы, которые он использует, на данном этапе совсем не актуальны.
Спасибо.
Нужно только обновлять, когда tiffAdd равно null или пустое, и именно поэтому я пытался его обернуть, а не писать инструкцию case для каждого, но я просто изменил каждую строку на tiffAdd. Спасибо! – korrowan
@korrowan См. Редактировать 1 в моем ответе, если вы хотите только обновить, где tiffAdd = '' вам даже не нужно использовать CASE, просто добавьте предложение WHERE в оператор обновления. – HeavenCore
Каковы последствия отказа от WHERE (protectants_ALL_Fixed.tiff = tiffAdds.Tiff)? Разве это не нужно из-за INNER JOIN? – korrowan