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

SQL查询需求:按EventStamp、Type等过滤并保留对应字段

解决方案:按EventStamp筛选目标记录

要实现你需要的逻辑——同EventStamp下优先保留Type为OPR的记录;若全是DDE则保留Provider为RDSSERVER\Intouch的记录,可以用窗口函数控制优先级筛选,替代当前的UNION+DISTINCT写法,完整保留所有需要的字段:

SELECT EventStamp, TagName, Description, Area, Type, Value, Antes, Provider, Operator
FROM (
    SELECT 
        EventStamp,
        TagName,
        Description,
        Area,
        Type,
        Value,
        CheckValue AS Antes,
        Provider,
        Operator,
        -- 设定优先级:OPR优先,符合条件的DDE次之
        ROW_NUMBER() OVER (
            PARTITION BY EventStamp 
            ORDER BY 
                CASE 
                    WHEN Type = 'OPR' THEN 1
                    WHEN Type = 'DDE' AND Provider = 'RDSSERVER\Intouch' THEN 2
                    ELSE 3 
                END
        ) AS rn
    FROM [dbo].[v_EventHistory]
    WHERE Type IN ('OPR', 'DDE') -- 仅处理目标类型
) AS ranked
WHERE rn = 1 -- 取每组内优先级最高的记录
ORDER BY EventStamp DESC;

逻辑说明:

  • 优先级标记:通过CASE语句给不同记录设定优先级,OPR类型优先级最高(标记为1),符合Provider要求的DDE标记为2,其余DDE标记为3
  • 分组排序:用PARTITION BY EventStamp将相同时间戳的记录归为一组,ROW_NUMBER()给每组内的记录按优先级编号
  • 筛选目标:只保留每组内编号为1的记录,即该EventStamp下最符合要求的那条记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:02:13