You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Data Entity中实现SysUserLog表的MAX日期聚合查询

基于SysUserLog创建Data Entity实现最新登录日期的方案

核心结论

不能通过范围(Range)实现MAX聚合逻辑,必须使用SysComputedColumn(计算列),或者先创建聚合视图再基于视图生成Data Entity。

具体实现方案

方案一:基于自定义聚合视图创建Data Entity

  1. 在D365FO/AX中创建自定义视图,写入如下SQL逻辑:
select UserId, Max(createdDateTime) AS LastLogin
from SYSUSERLOG
group by UserId
  1. 直接基于该视图创建Data Entity,将视图中的UserId和LastLogin字段映射到实体字段即可,无需额外配置。

方案二:在现有SysUserLog实体中添加计算列

如果要基于原SysUserLog表的Data Entity改造:

  1. 在实体的数据源配置中,新增一个计算列,通过SysComputedColumn编写聚合逻辑,示例代码如下:
SysComputedColumn::computeColumn(
    "SELECT MAX(createdDateTime) FROM SYSUSERLOG WHERE UserId = %1",
    SysComputedColumn::returnField(SysComputedColumn::tablePath(tableNum(SysUserLog)), fieldStr(SysUserLog, UserId))
)
  1. 将这个计算列添加到实体的字段集合中,命名为LastLogin即可。

关于范围的说明

范围(Range)仅用于单条记录级别的数据过滤(对应SQL的WHERE子句),无法实现GROUP BY分组+聚合函数的统计逻辑,因此完全无法满足“获取每个用户最新登录日期”的需求。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:32:37