大型机COBOL db2删除程序

时间:2017-11-07 07:24:04

标签: db2 cursor cobol mainframe

详细问题是我的下一个问题 - 请查看以下链接

DB2/Cursor program working in cobol

1 个答案:

答案 0 :(得分:0)

这应该是一个两步过程。首先确定要删除的记录,然后在第二步中删除这些记录。我认为,您无法从正在提取的同一个表中删除记录,这就是为什么有两个步骤。

第1步:

Select Concat(A.ClientId, A.PhoneNumber, A.Timestamp) from MyTable A
 Where Concat(A.ClientId, A.PhoneNumber, A.Timestamp)
Not IN (Select Concat(B.ClientId, B.PhoneNumber, Min(B.Timestamp))
    from MyTable B
    Group by B.ClientId, B.PhoneNumber);

第2步:

Delete from MyTable
 Where Concat(A.ClientId, A.PhoneNumber, A.Timestamp) IN (all the values you got from Step1);

您可以运行步骤1,创建数据集以获取所有值并在步骤2中使用该数据集。如果您运行动态,则会执行剪切粘贴,否则您必须使用SORT修改数据集从中创建一个查询。这将是步骤1和2中间的另一个步骤。