首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于SQL Server中值的递归更新

基于SQL Server中值的递归更新
EN

Stack Overflow用户
提问于 2016-03-15 07:04:54
回答 2查看 54关注 0票数 1

我有一个更新表的存储过程。使用日常作业调用此存储过程。

存储过程中的逻辑如下:

代码语言:javascript
运行
复制
Update Basetable
Set amount = Isnull(actualamount, 0)
From Acutaltable
Where jobcode Like '[%A-Z%]'

Update Basetable
Set amount = amount + Isnull(actualamount, 0)
From Acutaltable
Where jobcode Like '[%0-9%]'

jobcode列每天使用动态值进行更新(即:[%A-Z%]作业代码可以替换[%0-9%]作业代码)。因此,如果上述任何更新块失败,则存储过程将导致错误的输出。我通过在每次更新之前添加这段代码来处理这个问题。

代码语言:javascript
运行
复制
UPDATE Basetable 
SET amount = NULL

除此之外,如何处理上述情况?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-15 07:17:42

您可以在下面这样的语句中使用大小写,

代码语言:javascript
运行
复制
UPDATE Basetable
SET amount = CASE 
        WHEN jobcode LIKE '[%A-Z%]'
            THEN ISNULL(actualamount, 0)
        WHEN jobcode LIKE '[%0-9%]'
            THEN amount + Isnull(actualamount, 0)
        ELSE NULL
        END
FROM Acutaltable
票数 3
EN

Stack Overflow用户

发布于 2016-03-15 07:21:17

代码语言:javascript
运行
复制
UPDATE Basetable
SET amount = (CASE WHEN jobcode LIKE '[%A-Z%]' THEN  0 
WHEN jobcode LIKE '[%0-9%]'THEN amount END) + Isnull(actualamount,0)
FROM Acutaltable
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36004625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档