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

使用EXISTS实现TSQL按站点判断的聚合查询优化咨询

更优实现方案

你可以用窗口函数实现单次表扫描完成计算,相比你现有用APPLY、EXCEPT的写法,逻辑更简洁,执行效率也更高,在数据量较大的场景下性能优势会更明显。

实现代码如下:

SELECT 
    sn,
    site,
    cond,
    CASE 
        WHEN has_xy > 0 THEN NULL 
        ELSE SUM(val) 
    END AS revisedTotal
FROM (
    SELECT 
        *,
        SUM(CASE WHEN cond IN ('X', 'Y') THEN 1 ELSE 0 END) OVER (PARTITION BY site) AS has_xy
    FROM @t1
) t
GROUP BY sn, site, cond, has_xy
ORDER BY site, sn

逻辑说明

  • 内层查询通过窗口函数给每个站点标记has_xy:只要该站点下存在任意一条cond为X或Y的记录,has_xy的取值就会大于0,同一个站点的所有行has_xy取值一致
  • 外层按照sn、site、cond分组后,判断如果当前站点has_xy>0就返回NULL,否则返回val字段的求和结果,完全匹配你给出的期望输出
  • 整个查询仅需要扫描一次原始表,不需要额外的关联操作,执行开销远低于你现有的两种实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:39:03