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

如何在DOMO的SQL中计算两列差值并生成新列?

在DOMO SQL中计算期限差值并生成额外列

数据表结构

起始期限(Begin_Term)结束期限(End_Term)
2018Current
-select-Current
20152019
-select-2018

你尝试使用语句 case when SUM('End_Term') - SUM ('Begin_Term') then 1 else 0 end 计算期限差,但结果仅显示0和1,需要在DOMO平台实现两列相减并生成显示差值的额外列。

问题分析

你的语句存在两个核心问题:

  • 使用了SUM()聚合函数,但你需要的是逐行计算单条记录的期限差,聚合操作会将所有行的数值求和后再计算,最终只会得到单个结果,用case when判断自然只能返回0或1。
  • End_Term包含Current、Begin_Term包含-select-这类非数值字符串,直接进行减法运算会报错或得到异常结果,必须先处理这些特殊值。

DOMO SQL解决方案

DOMO SQL兼容标准SQL语法,针对你的场景,需先转换特殊值为可计算的数值,再逐行计算差值:

完整SQL示例

SELECT
  Begin_Term,
  End_Term,
  -- 处理特殊值并计算期限差值
  CASE
    -- 处理起始期限为无效值的情况,可根据业务需求替换为NULL或对应年份
    WHEN Begin_Term = '-select-' THEN NULL
    -- 将End_Term的Current替换为当前年份后计算差值
    WHEN End_Term = 'Current' THEN YEAR(CURRENT_DATE) - CAST(Begin_Term AS INT)
    -- 正常数值类型的期限相减
    ELSE CAST(End_Term AS INT) - CAST(Begin_Term AS INT)
  END AS Term_Difference
FROM
  你的数据表名;

关键说明

  • CAST(字段名 AS INT):将字符串格式的年份转换为整数类型,确保减法运算可正常执行。
  • YEAR(CURRENT_DATE):DOMO支持的内置函数,用于获取当前系统年份,替代Current字符串。
  • 对于-select-这类无效值,可根据业务逻辑调整处理方式,比如替换为对应结束期限的年份,而不是NULL。
  • 无需使用SUM()函数,因为需求是计算每行独立的期限差值,而非聚合所有行的总和差值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:25:20