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

SQL查询优化:仅标记#TRAN表中Business Code变更的行

解决方案:用窗口函数LAG()标记Business变更行

嘿,你可以用LAG()窗口函数来简化查询,直接对比当前行和同一ID的上一行Business值,就能精准标记出变更的行,不需要原来那种复杂的CTE关联啦。

修改后的SQL代码

SELECT 
    ID,
    Business,
    STDT,
    -- 对比当前行与上一行的Business,不同则标记1,否则为空
    CASE 
        WHEN Business <> LAG(Business) OVER (PARTITION BY ID ORDER BY STDT) 
        THEN 1 
        ELSE NULL 
    END AS Flag
FROM #TRAN
ORDER BY ID, STDT;

代码说明

  • LAG(Business) OVER (PARTITION BY ID ORDER BY STDT):这个窗口函数会为每一行获取同一ID、按STDT排序的上一行的Business值。
  • CASE语句:如果当前行的Business和上一行不同,就设置Flag为1,否则返回NULL(也就是空值)。
  • 最后按ID和STDT排序,和你期望的结果顺序完全一致。

这个查询会直接输出你要的格式,只在Business发生变更的行(也就是和上一行Business不同的行)标记Flag=1,其余行Flag为空,完美匹配你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:27:41