我以前从未使用过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
哪个不起作用,我理解为什么它不起作用但不知道从哪里开始,任何帮助都会很棒。我们每月只使用一次更新数据(大约150万条记录),此时它使用的资源根本不相关。
感谢。
答案 0 :(得分:2)
假设我理解您的问题(即defendants_ALL_Fixed
字段为空时只更新tiffAdds
defendants_ALL_Fixed
字段),您可以按照以下方式执行此操作(坚持使用案例):< / p>
UPDATE defendants_ALL_Fixed
SET tiffAdd = CASE WHEN LTRIM(RTRIM(ISNULL(tiffAdd, ''))) = '' THEN tiffAdds.Add1
ELSE tiffAdd
END ,
tiffZip = CASE WHEN LTRIM(RTRIM(ISNULL(tiffZip, ''))) = '' THEN tiffAdds.Zip
ELSE tiffZip
END ,
tiffCity = CASE WHEN LTRIM(RTRIM(ISNULL(tiffCity, ''))) = '' THEN tiffAdds.City
ELSE tiffCity
END ,
tiffState = CASE WHEN LTRIM(RTRIM(ISNULL(tiffState, ''))) = '' THEN tiffAdds.State
ELSE tiffState
END
FROM defendants_ALL_Fixed
INNER JOIN tiffAdds ON defendants_ALL_Fixed.tiff = tiffAdds.Tiff
更简单(或更容易阅读)的选项是基于WHERE
子句(每列一个更新语句)执行简单的更新语句:
UPDATE defendants_ALL_Fixed
SET tiffAdd = tiffAdds.Add1
FROM defendants_ALL_Fixed
INNER JOIN tiffAdds ON defendants_ALL_Fixed.tiff = tiffAdds.Tiff
WHERE ( LTRIM(RTRIM(ISNULL(tiffAdd, ''))) = '' )
编辑1:根据您的评论,这表示您只需更新tiffAdd =''的所有列?即
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 LTRIM(RTRIM(ISNULL(tiffAdd, ''))) = ''
答案 1 :(得分:0)
为什么不使用合并?在每个字段上使用merge,检查值是否为null或为空。我认为这将是最好的(在我自己的解决方案中使用它)。