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

如何用子查询替代临时表实现Power BI/Snowflake关联的SQL查询

替换临时表为子查询的Snowflake SQL实现

最终SQL代码

SELECT DISTINCT ihp.INCIDENT_NUMBER, ihp.ASSIGNED_GROUP, 
       ihp.ASSIGNED_GROUP_SEQ_NO, ihp.History_Start_Date
FROM INCIDENT_HISTORY_PUBLIC ihp
INNER JOIN (
    -- 原临时表DS_TEMP的逻辑直接转为子查询
    SELECT INCIDENT_NUMBER, Assigned_Group, Assigned_Group_SEQ_NO AS SEQ_NO
    FROM INCIDENT_HISTORY_PUBLIC
    WHERE ASSIGNED_GROUP LIKE ' DS$_%' ESCAPE '$'
) ds_temp ON ihp.INCIDENT_NUMBER = ds_temp.INCIDENT_NUMBER
WHERE ihp.ASSIGNED_GROUP NOT LIKE '%Help_Desk%' 
  AND ihp.ASSIGNED_GROUP_SEQ_NO < ds_temp.SEQ_NO
ORDER BY ihp.INCIDENT_NUMBER, ihp.ASSIGNED_GROUP_SEQ_NO;

逻辑说明

  1. 子查询替代临时表:将原创建临时表并插入数据的逻辑,直接封装为内连接的子查询ds_temp,完全复刻原临时表的筛选规则(匹配特定格式的ASSIGNED_GROUP)
  2. 关联与筛选:保持原查询的核心逻辑——关联同一事件编号的记录,排除归属组包含Help_Desk的条目,仅保留序列号小于子查询中对应记录序列号的结果
  3. 去重与排序:保留原语句的DISTINCT去重和排序规则,确保输出结果与原临时表方案完全一致

关于max()方案失败的说明

原需求并非取每个事件的最大序列号,而是要匹配所有符合ASSIGNED_GROUP LIKE ' DS$_%'的记录的序列号,再找出同事件下序列号更小的其他记录。误用max()会丢失多个符合条件的DS组记录对应的匹配逻辑,导致结果不全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:05:17