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

如何检测Journey表中连续行的MilestoneID是否重复

检测Journey表中连续重复的MilestoneID

你的现有SQL仅统计了每个ID下各MilestoneID的出现总次数,无法区分重复是否来自连续行,会误判非连续的重复场景。

解决方案1:找出所有存在连续重复的ID和MilestoneID

使用窗口函数LAG获取同一提案(ID)的上一行MilestoneID,对比当前行与上一行是否相同:

SELECT DISTINCT ID, MilestoneID
FROM (
    SELECT 
        ID,
        MilestoneID,
        -- 替换[排序字段]为实际的流转顺序字段(如创建时间、自增序列等)
        LAG(MilestoneID) OVER (PARTITION BY ID ORDER BY [排序字段]) AS PrevMilestoneID
    FROM Journey
) t
WHERE MilestoneID = PrevMilestoneID

解决方案2:直接判断是否存在连续重复

如果只需确认是否有连续重复的情况,可使用EXISTS简化查询:

SELECT CASE 
    WHEN EXISTS (
        SELECT 1
        FROM (
            SELECT 
                ID,
                MilestoneID,
                LAG(MilestoneID) OVER (PARTITION BY ID ORDER BY [排序字段]) AS PrevMilestoneID
            FROM Journey
        ) t
        WHERE MilestoneID = PrevMilestoneID
    ) THEN '存在连续重复的MilestoneID'
    ELSE '无连续重复的MilestoneID'
END AS Result

关键说明

  • 必须指定ORDER BY的排序字段:SQL表的行顺序不固定,需通过流转时间、自增ID等字段明确提案的流转顺序,否则无法准确判断“连续”。
  • PARTITION BY ID确保仅在同一提案的范围内对比前后行的MilestoneID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:27:09