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

如何用SQL将三列数据通过条件判断生成结算状态单列?

用SQL生成结算状态列的解决方案

核心思路

在SQL中处理这种多条件分支的列计算,CASE语句是标准且通用的选择,比嵌套IF兼容性更好(不同数据库对IF的支持有差异,CASE是ANSI SQL标准)。不需要使用GROUP BY或ORDER BY,因为这是行级的字段转换,不是聚合或排序操作。

转换后的SQL语句

假设你的表名为settlement_table,对应的字段名分别是Settle_date、days_to_settle、days_late,SQL语句如下:

SELECT
    Settle_date,
    days_to_settle,
    days_late,
    CASE
        WHEN days_to_settle - days_late BETWEEN 0 AND 15 THEN 'Settle on Time'
        WHEN days_to_settle - days_late BETWEEN 16 AND 30 THEN '<15 Days Late'
        ELSE '<30 Days Late'
    END AS Settle_Status
FROM settlement_table;

逻辑对应说明

  • 第一个WHEN条件对应Excel公式的AND(B2-C2<=15,B2-C2>=0),用BETWEEN简化写法,逻辑完全一致
  • 第二个WHEN条件对应AND(B2-C2<=30,B2-C2>15),用BETWEEN 16 AND 30匹配区间
  • ELSE分支对应所有超出上述区间的情况,返回<30 Days Late

示例验证

用你提供的测试数据执行上述SQL,会得到和预期一致的结果:

Settle_datedays_to_settledays_lateSettle_Status
1/8/2021110Settle on Time
11/5/2021160<15 Days Late
10/11/2020311<30 Days Late

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:16:05