SELECT * FROM table_name INTO TABLE @DATA(records) ORDER BY account, time DESC.DATA: last_account TYPE account.LOOP AT records INTO DATA(record). IF last_account NE record-account. APPEND record TO @DATA(new_records). last_account = record-account. ENDIF.ENDLOOP.这段代码在loop中如何实现
时间: 2024-01-11 15:03:14 浏览: 69
这段代码的主要功能是将 `table_name` 中的记录按照 `account` 字段进行分组,并且每个组内的记录按照 `time` 字段降序排序,最后将每个组中最新的一条记录添加到 `new_records` 表中。
在 `LOOP` 中,首先判断当前记录的 `account` 字段是否与上一条记录的 `account` 字段相同,如果不同,说明进入了一个新的账户组,需要将当前记录添加到 `new_records` 表中,并且更新 `last_account` 变量为当前记录的 `account` 值。如果相同,则说明还在当前账户组内,直接跳过不做处理。
具体实现代码如下:
```
DATA: last_account TYPE account.
LOOP AT records INTO DATA(record).
IF last_account NE record-account.
APPEND record TO @DATA(new_records).
last_account = record-account.
ENDIF.
ENDLOOP.
```
需要注意的是,`last_account` 变量需要在循环之前先定义,并且 `new_records` 表也需要在循环之前先定义并且清空,否则会出现运行时错误。
阅读全文