我正在做一个程序,它使用逻辑文件(交易代码、交易日期和交易金额(读取物理文件中的所有记录,检查是否有 2 条或更多条记录具有相同的 trans 代码和 trans date,并确定最大数量。我应该保留数量最多的记录并删除(删除标志='D'(其他记录(具有相同的转码和转码日期(。
我如何知道金额最大的记录是什么? 我的意思是,如果有 1000 条记录,我找到了 7 个相同的 trans 代码和 trans 日期,如果最大数量是记录 7th,如何在读取文件后删除记录 1 到 6,文件指针转到下一条记录,对吧?
如果这令人困惑,我深表歉意。这也让我感到困惑。
我会使用嵌入式SQL来实现这样的事情。在不知道表的格式的情况下,您可以使用聚合来查找要更新的记录,如下所示:
exec sql
update table a
set deletecode = 'D'
where amount <> (select max(amount) from table
where trancd = a.trancd);
这通过查找与要更新的行具有相同trancd
的行的max(amount)
来工作。如果要更新的行的数量与该trancd
的max(amount)
不同,请继续更新deletecode
,否则不要更新它。无需检查是否有两条或更多条记录,因为如果只有一条记录,则max(amount)
将与要更新的交易上的amount
字段相同。