我正在写一个VB应用程序,它正在清理DB2数据库中的一些数据。在一些表中,我想更新整个列。例如,一个帐号列。我正在更改所有帐号,使其从1开始,并在列表中向下递增。我希望能够同时返回旧帐号、和新的一个,这样我就可以生成某种报告,我可以参考,所以我不会失去原始值。
DECLARE @accntnum INT
SET @accntnum = 0
UPDATE accounts
SET @accntnum = accntnum = @accntnum + 1
GO
有没有办法在一个表中同时返回原始的accntnum和新的accntnum?
3条答案
按热度按时间lpwwtiir1#
DB2有一个真正的nifty feature,您可以在其中从“数据更改语句”中选择数据,这是在DB2 for Linux/Unix/Windows上测试的,但我认为它至少也应该在DB2 for z/OS上工作。
对于您的编号,您也可以考虑创建一个sequence,然后您的更新将类似于:
INCLUDE
部分使用指定的名称和数据类型在结果表中创建一个新列,然后您可以在update语句中设置值,就像设置任何其他字段一样。wydwbb8l2#
一个可能的解决方案是添加一个额外的列(我们称之为
oldaccntnum
),并在更新时将旧值赋给该列,然后在不再需要时将其删除。0vvn1miw3#
我会这么做:
但是,不知道所有的条件,这可能是不值得的麻烦。