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

SQL脚本实现:按日期优先保留指定Lkup_Value值

实现指定逻辑的SQL脚本方案

需求说明

对包含Lkup_Value和Report_Date字段的数据库表,执行以下处理逻辑:

  • 当同一Report_Date下存在Lkup_Value为MMM的记录时,该日期下所有记录的Lkup_Value统一替换为MMM
  • 若该日期无MMM记录,则保留原有Lkup_Value值

原表数据

Lkup_Value     |      Report_Date 
-------------------+------------------------------
 MMM               |2022-07-11 
 MMM-IR            |2022-07-11
 MMM-IR            |2022-07-04
 MMM               |2022-07-04
 CCC               |2022-01-26
 CCC               |2022-01-03

期望输出

Lkup_Value     |      Report_Date 
-------------------+------------------------------
 MMM               |2022-07-11 
 MMM               |2022-07-11
 MMM               |2022-07-04
 MMM               |2022-07-04
 CCC               |2022-01-26
 CCC               |2022-01-03

解决方案

方案1:子查询结合CASE WHEN

逻辑直观,适合小数据量场景:

SELECT
    CASE
        WHEN EXISTS (
            SELECT 1
            FROM your_table t2
            WHERE t2.Report_Date = t1.Report_Date
              AND t2.Lkup_Value = 'MMM'
        ) THEN 'MMM'
        ELSE t1.Lkup_Value
    END AS Lkup_Value,
    t1.Report_Date
FROM your_table t1;

方案2:窗口函数实现(性能更优)

仅扫描表一次,适合大数据量场景:

SELECT
    CASE
        WHEN has_mmm = 1 THEN 'MMM'
        ELSE Lkup_Value
    END AS Lkup_Value,
    Report_Date
FROM (
    SELECT
        Lkup_Value,
        Report_Date,
        MAX(CASE WHEN Lkup_Value = 'MMM' THEN 1 ELSE 0 END) OVER (PARTITION BY Report_Date) AS has_mmm
    FROM your_table
) t;

说明

  • 将脚本中的your_table替换为你的实际表名
  • 方案2通过窗口函数给每个日期标记是否存在MMM记录,外层根据标记统一替换值,执行效率远高于方案1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:24:31