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

Oracle环境下使用LINQ多分组统计事务最新记录的成功失败数咨询

实现方案

调整思路

现有统计逻辑已经完成了按日期分组的总数量统计,要新增成功/失败统计,只需要在原有查询基础上补充两个字段:

  • 用来判断最终结果的状态字段(对应表中存储的成功/失败状态列)
  • 用来判定分组内最新记录的时间排序字段(比如状态更新时间、处理完成时间,用主键自增ID也可以)

完整代码示例

假设状态字段为STATUS(成功存值"SUCCESS"、失败存值"FAILED",可替换为你实际业务的状态码),排序字段为PROCESS_END_TIME,修改后的代码如下:

// 基础查询:关联事务表、路由表,过滤时间范围,带出必要字段
var baseQuery = from filetrans in context.FILE_TRANSACTION
                join route in context.FILE_ROUTE on filetrans.FILE_TRANID equals route.FILE_TRANID
                where filetrans.PROCESS_STRT_TIME >= fromDateFilter 
                   && filetrans.PROCESS_STRT_TIME <= toDateFilter 
                select new 
                {
                    PROCESS_DATE = DbFunctions.TruncateTime((DateTime)filetrans.PROCESS_STRT_TIME),
                    filetrans.FILE_TRANID,
                    route.DESTINATION,
                    filetrans.STATUS, // 补充状态字段
                    filetrans.PROCESS_END_TIME // 补充用来取最新记录的排序字段
                };

// 第一层分组:按日期、事务ID、目的地分组,取每组最新的状态
var groupWithLatestStatus = baseQuery
    .GroupBy(p => new { p.PROCESS_DATE, p.FILE_TRANID, p.DESTINATION })
    .Select(g => new 
    {
        g.Key.PROCESS_DATE,
        // 取分组内时间最大的那条的状态,作为该事务+目的地的最终结果
        LatestStatus = g.OrderByDescending(x => x.PROCESS_END_TIME).FirstOrDefault().STATUS
    });

// 第二层分组:按日期聚合,统计总数量、成功数、失败数
var dailyResult = groupWithLatestStatus
    .GroupBy(x => x.PROCESS_DATE)
    .Select(g => new 
    {
        Date = g.Key,
        TotalCount = g.Count(), // 总数量和原有逻辑一致
        SuccessCount = g.Count(x => x.LatestStatus == "SUCCESS"), // 成功数
        FailCount = g.Count(x => x.LatestStatus == "FAILED") // 失败数
    })
    .ToDictionary(a => a.Date, a => new { a.TotalCount, a.SuccessCount, a.FailCount });

注意事项

  • 如果状态是用数字枚举存储的,把"SUCCESS"/"FAILED"替换为对应的数值即可
  • 如果没有专门的处理结束时间字段,可以用PROCESS_STRT_TIME或者表的主键自增ID作为排序依据,只要能保证取到最新的一条记录即可
  • 该写法兼容Oracle EF驱动的LINQ转SQL逻辑,不会出现本地计算的性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:03