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

Teradata中按指定列分组判断指定条件下debt_calc是否存在的方法

Teradata 无JOIN实现分组检查字段存在性方案

实现思路

通过Teradata窗口分析函数,按(mnth_end_d, id, name)分组后,在组内判断是否存在period_rank = 'T'且debt_calc非空的记录。利用MAX()聚合配合CASE表达式标记符合条件的记录,再转换为BOOLEAN类型生成debt_exists列。

具体SQL代码

SELECT
    mnth_end_d,
    id,
    name,
    period_rank,
    debt_calc,
    -- 分组内判定目标记录是否存在
    CASE
        WHEN MAX(CASE WHEN period_rank = 'T' AND debt_calc IS NOT NULL THEN 1 ELSE 0 END) OVER (PARTITION BY mnth_end_d, id, name) = 1
        THEN TRUE
        ELSE FALSE
    END AS debt_exists
FROM your_input_table;

代码说明

  • PARTITION BY mnth_end_d, id, name:指定分组维度,确保同组内所有记录共享同一个debt_exists值
  • MAX(CASE WHEN ... THEN 1 ELSE 0 END) OVER (...):在分组内统计是否存在符合条件的记录,存在则返回1,否则返回0
  • 外层CASE将数值结果转换为Teradata支持的BOOLEAN类型(TRUE/FALSE)

输入输出示例

输入表(your_input_table)

mnth_end_didnameperiod_rankdebt_calc
2023-01-31101AliceT1500.00
2023-01-31101Alice12000.00
2023-02-28102BobTNULL
2023-02-28102Bob23000.00
2023-03-31103CharlieTNULL
2023-03-31103Charlie1NULL

输出表

mnth_end_didnameperiod_rankdebt_calcdebt_exists
2023-01-31101AliceT1500.00TRUE
2023-01-31101Alice12000.00TRUE
2023-02-28102BobTNULLFALSE
2023-02-28102Bob23000.00FALSE
2023-03-31103CharlieTNULLFALSE
2023-03-31103Charlie1NULLFALSE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:05:24