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

基于Advantage SQL筛选全有结束日期的学员最新结束日期

解决Advantage SQL筛选全学习目标有结束日期的学员及最新日期问题

我来帮你搞定这个需求!要筛选出所有学习目标都有结束日期的学员,同时获取他们的最新结束日期,核心是先排除那些存在至少一个无结束日期学习目标的学员,再对合格学员计算最大结束日期。

这里给你一个可行的Advantage SQL查询语句:

SELECT 
    a AS student_id, 
    MAX(c) AS latest_end_date
FROM 
    your_table_name -- 替换成你的实际表名
WHERE 
    a NOT IN (
        -- 子查询:找出存在至少一个无结束日期学习目标的学员
        SELECT a
        FROM your_table_name
        WHERE c IS NULL OR TRIM(c) = ''
    )
GROUP BY 
    a

关键逻辑解释:

  • 子查询部分:定位所有有缺失结束日期记录的学员——只要某个学员的任意一条学习目标记录中c是NULL或者空字符串(如果你的空值是其他形式,比如默认的无效日期,记得调整这里的判断条件),就会被标记出来。
  • 外层查询用NOT IN排除这些不合格的学员,确保剩下的学员每一条学习目标都有有效的结束日期。
  • 最后通过GROUP BY a分组,用MAX(c)拿到每个学员的最新结束日期。

如果你的Advantage SQL版本支持窗口函数,也可以用另一种更灵活的写法(不过上面的写法兼容性更好):

WITH student_validity AS (
    SELECT 
        a,
        c,
        -- 标记该学员是否存在无结束日期的记录
        MAX(CASE WHEN c IS NULL OR TRIM(c) = '' THEN 1 ELSE 0 END) OVER (PARTITION BY a) AS has_missing_date
    FROM your_table_name
)
SELECT 
    a AS student_id,
    MAX(c) AS latest_end_date
FROM student_validity
WHERE has_missing_date = 0
GROUP BY a

两种写法都能精准满足你的需求,选你觉得更易读的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:12:17