OData按日期过滤后执行聚合操作报错的解决方法求助
问题原因
你遇到的错误是OData执行顺序导致的:当同时使用$filter和$apply时,外部的$filter会在$apply的转换操作之后执行。你的$apply里用了groupby((General)),这会移除所有非分组字段(包括DateComptable),后续的$filter自然找不到这个字段,因此报错。
解决方法
把日期和General的过滤逻辑嵌入到$apply内部,用filter(...)操作放在groupby之前,确保先过滤原始数据,再执行分组聚合。
修改后的查询语句:
$apply=filter(General eq '401000' and date(DateComptable) ge 2022-06-01T00:00:00Z and date(DateComptable) le 2022-06-30T00:00:00Z)/groupby((General),aggregate(Debit with sum as TotalDebit, Credit with sum as TotalCredit))
逻辑说明
- 先通过
filter筛选出符合General = '401000'且DateComptable在指定日期范围内的原始数据,此时DateComptable处于可用状态。 - 再对筛选后的数据按
General分组,同时聚合Debit和Credit的总和,分组后无需保留DateComptable,不会触发上下文缺失的错误。
内容的提问来源于stack exchange,提问作者Jesse VANKERREBROUCK
相关产品推荐
相关产品推荐

