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

如何查询订阅用户与Offer的下一状态及对应状态日期?

查询订阅用户与Offer的下一状态及对应状态日期

针对你的需求,可以使用Oracle的**窗口函数LEAD()**来获取每个用户-Offer组合的下一个状态及日期,同时通过行号过滤得到符合预期的结果。

解决方案SQL

SELECT 
    user_id AS "用户ID",
    offer_id,
    status,
    status_date,
    next_status,
    next_status_date
FROM (
    SELECT 
        user_id,
        offer_id,
        status,
        status_date,
        -- 获取同一分组内的下一个状态
        LEAD(status) OVER (PARTITION BY user_id, offer_id ORDER BY status_date) AS next_status,
        -- 获取同一分组内的下一个状态日期
        LEAD(status_date) OVER (PARTITION BY user_id, offer_id ORDER BY status_date) AS next_status_date,
        -- 按日期倒序给每个分组内行编号,最新状态为rn=1
        ROW_NUMBER() OVER (PARTITION BY user_id, offer_id ORDER BY status_date DESC) AS rn
    FROM myTable
) t
-- 保留非最新状态行,以及只有单个状态的行
WHERE rn <> 1 OR (rn = 1 AND next_status IS NULL);

结果说明

执行上述SQL后,将得到与你预期完全匹配的结果:

用户IDoffer_idstatusstatus_datenext_statusnext_status_date
1offer_1Active01/01/2021Deactive01/01/2022
1offer_2Active02/01/2022NULLNULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:35:41